14 août 2012

Dotclear 2.4: support de la transparence dans les aperçus

Lorsqu'on insère une image dans un billet Dotclear, le système nous permet de choisir sa taille parmi les aperçus qu'il a généré. On peut ainsi adapter la taille de l'image présente dans le billet en fonction de l'effet qu'on souhaite obtenir.

Si cette fonctionnalité fonctionne très bien sur les images jpeg ou gif, elle est en revanche inutilisable sur les images png dès lors que celles-ci possède un canal alpha : la zone transparente est remplacée par un gris qui n'est pas vraiment du plus bel effet.

Ce (court) billet est une copie du message que j'ai posté sur le forum Dotclear. Il propose un patch - simple - permettant de corriger ce problème.

Depuis que dotclear génère des thumbnail, il y a toujours eu quelque chose qui m'a agacé : la transparence d'un fichier png n'est pas sauvegardée. Du coup, un fond gris est ajouté, pour le meilleur ou pour le pire (principalement pour le pire, d'ailleurs).

Ci-joint un patch qui résout ce problème. Le patch est relativement simple, et effectue les choses suivantes :

  • les thumbnails sont sauvegardées au format png ; clairement, c'est overkill pour les grosses, grosses images, et ce n'est peut-être pas une solution très élégante (en même temps, la sauvegarde en jpg n'est guère adaptée aux blogs qui sont un tant soit peu techniques - les schemas et autres images qui peuvent être ajoutées sont assez mal traitées par le jpeg)
  • on demande explicitement à GD de sauvegarder la souche alpha dans les PNG - au moment de l'ouverture du fichier originel, et au moment de la création du fichier thumbnail. Du coup, les thumbnails générés ont cette couche alpha, pour mon plus grand bonheur.

Je ne penses pas que ce patch ait un effet catastrophique sur la plupart des blogs existants. Ceux qui ont un blog photo devrait quand même prendre garde, parce que les thumbnails PNG sont plus lourds que les thumbnails JPG (et puisque les photos ne sont pas impactées par le problème, le patch n'a pas vraiment d'intérêt).

Quoi qu'il en soit, ce patch propose une solution à mon problème. Ce n'est pas nécessairement la meilleure solution (peut-être faudrait-il vérifier le type du fichier originel, ou vérifier si ce fichier a une couche alpha) mais elle peut servir de base à la solution finale. Ma connaissance de dc2 reste limitée, donc je n'ai pas poussé mes recherches plus loin. Dans tous les cas, il serait vraiment souhaitable d'avoir quelque chose qui, au final, respecte le principe de moindre surprise - c'est à dire qu'un thumbnail d'une image avec une couche alpha devrait avoir une couche alpha.

Note : le patch est disponible en pièce attachée - l'insertion dans le billet ayant une tendance à détruire sa structure. Ce patch s'applique sur la révision 872:728b4c1f2b41 du repository dotclear (et sur une 2.4.4 normale ; en fait, étant donné la fréquence des changements sur les fichiers touchés, je pense qu'il pourrait s'appliquer sur une 2.4.x, voire une version plus ancienne).

Commentaires

1. Le mercredi, juillet 3 2013, 18:19 par Fanch69

Bonjour,

pour la version 2.5, il faut aussi modifier la variable $thumb_tp à la ligne 31 de inc/core/class.dc.media.php:

-    public $thumb_tp = '%s/.%s_%s.jpg';
+    public $thumb_tp = '%s/.%s_%s.png';
2. Le jeudi, juillet 18 2013, 21:18 par Emmanuel Deloget

Merci :)

Je vais refaire un pach pour la 2.5 dans les jours qui viennent.

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Fil des commentaires de ce billet