Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2012-08-14 13:00:54

Emmanuel Deloget
Membre
Inscription : 2009-10-14

[PATCH] sauvegarde le la transparence sur les thumbnails

Bonjour,

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.

diff -r 2f05a77db4e9 inc/core/class.dc.media.php
--- a/inc/core/class.dc.media.php	Mon Aug 13 10:27:57 2012 +0200
+++ b/inc/core/class.dc.media.php	Tue Aug 14 14:47:06 2012 +0200
@@ -912,7 +912,7 @@ class dcMedia extends filemanager
 					($suffix == 'sq' || $w > $s[0] || $h > $s[0]))
 				{
 					$img->resize($s[0],$s[0],$s[1]);
-					$img->output('jpeg',$thumb_file,80);
+					$img->output('png',$thumb_file,80);
 				}
 			}
 			$img->close();
diff -r 4f62679e0756 inc/libs/clearbricks/image/class.image.tools.php
--- a/inc/libs/clearbricks/image/class.image.tools.php	Thu May 31 09:09:21 2012 +0200
+++ b/inc/libs/clearbricks/image/class.image.tools.php	Tue Aug 14 14:47:06 2012 +0200
@@ -79,7 +79,8 @@ class imageTools
 				case 3 :
 					$this->res = @imagecreatefrompng($f);
 					if (is_resource($this->res)) {
-						@imagealphablending($this->res, true);
+						@imagealphablending($this->res, false);
+						@imagesavealpha($this->res, true);
 					}
 					break;
 				case 2 :
@@ -288,8 +289,8 @@ class imageTools
 		# truecolor is 24 bit RGB, ie. 3 bytes per pixel.
 		$this->memoryAllocate($_w,$_h,3);
 		$dest = imagecreatetruecolor($_w,$_h);
-		$fill = imagecolorallocate($dest,128,128,128);
-		imagefill($dest,0,0,$fill);
+		@imagealphablending($dest, false);
+		@imagesavealpha($dest, true);
 		imagecopyresampled($dest,$this->res,0,0,$decalW,$decalH,$_w,$_h,$cropW,$cropH);
 		imagedestroy($this->res);
 		$this->res = $dest;

Hors ligne

#2 2013-07-03 15:58:50

Fanch69
Membre
Inscription : 2013-06-26

Re : [PATCH] sauvegarde le la transparence sur les thumbnails

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';

Hors ligne

#3 2013-08-03 08:55:09

pressecologie
Membre
Lieu : île de la Réunion
Inscription : 2011-02-21
Site Web

Re : [PATCH] sauvegarde le la transparence sur les thumbnails

Bonjour,
Je rencontre le même problème.
Cela va t il  poser des problèmes pour les mises à jour ?

Merci.

Dernière modification par pressecologie (2013-08-03 09:07:16)

Hors ligne

#4 2013-08-03 17:34:47

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : [PATCH] sauvegarde le la transparence sur les thumbnails

Pour les mises à jour automatique, oui, il faudra reporter la modification sur la nouvelle version.

Je vous encourage à ouvrir un ticket pour ce problème.


Dotclear addicted since 2004

Hors ligne

#5 2013-08-04 06:45:37

pressecologie
Membre
Lieu : île de la Réunion
Inscription : 2011-02-21
Site Web

Re : [PATCH] sauvegarde le la transparence sur les thumbnails

Hors ligne

#6 2013-08-04 08:06:53

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : [PATCH] sauvegarde le la transparence sur les thumbnails

Merci


Dotclear addicted since 2004

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map