From 736e924f776e396ea6896f011f7b523c5e16190c Mon Sep 17 00:00:00 2001 From: ARNO* <arno@rezo.net> Date: Sat, 13 Jan 2007 13:51:28 +0000 Subject: [PATCH] =?UTF-8?q?Bug=20sur=20les=20PNG=20indexe=CC=81s=20(256=20?= =?UTF-8?q?couleurs).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc/filtres_images.php | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/ecrire/inc/filtres_images.php b/ecrire/inc/filtres_images.php index 04393bf141..1c9d9472ce 100644 --- a/ecrire/inc/filtres_images.php +++ b/ecrire/inc/filtres_images.php @@ -86,6 +86,19 @@ function image_valeurs_trans($img, $effet, $forcer_format = false) { return $ret; } +// Transforme une image a palette indexee (256 couleurs max) en "vraies" couleurs RGB +// http://doc.spip.org/@imagepalettetotruecolor + function imagepalettetotruecolor(&$img) { + if (!imageistruecolor($img) AND function_exists(imagecreatetruecolor)) { + $w = imagesx($img); + $h = imagesy($img); + $img1 = imagecreatetruecolor($w,$h); + imagecopy($img1,$img,0,0,0,0,$w,$h); + $img = $img1; + } +} + + // function d'ecriture du tag img en sortie des filtre image // reprend le tag initial et surcharge les tags modifies // http://doc.spip.org/@image_ecrire_tag @@ -186,6 +199,7 @@ function image_alpha($im, $alpha = 63) // Creation de l'image en deux temps // de facon a conserver les GIF transparents $im = $image["fonction_imagecreatefrom"]($im); + imagepalettetotruecolor($im); $im2 = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im2, false); @imagesavealpha($im2,true); @@ -267,6 +281,7 @@ function image_recadre($im,$width,$height,$position='center', $background_color= if ($creer) { $im = $image["fonction_imagecreatefrom"]($im); + imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($width, $height); @imagealphablending($im_, false); @imagesavealpha($im_,true); @@ -304,6 +319,7 @@ function image_flip_vertical($im) if ($creer) { $im = $image["fonction_imagecreatefrom"]($im); + imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im_, false); @imagesavealpha($im_,true); @@ -341,6 +357,7 @@ function image_flip_horizontal($im) if ($creer) { $im = $image["fonction_imagecreatefrom"]($im); + imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im_, false); @imagesavealpha($im_,true); @@ -551,6 +568,7 @@ function image_masque($im, $masque, $pos="") { $im = $nouveau["fonction_imagecreatefrom"]($im_n); + imagepalettetotruecolor($im); if ($nouveau["format_source"] == "gif" AND function_exists('ImageCopyResampled')) { $im_ = imagecreatetruecolor($x_dest, $y_dest); // Si un GIF est transparent, @@ -723,6 +741,7 @@ function image_nb($im, $val_r = 299, $val_g = 587, $val_b = 114) // Creation de l'image en deux temps // de facon a conserver les GIF transparents $im = $image["fonction_imagecreatefrom"]($im); + imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im_, false); @imagesavealpha($im_,true); @@ -796,6 +815,7 @@ function image_flou($im,$niveau=3) // Creation de l'image en deux temps // de facon a conserver les GIF transparents $im = $image["fonction_imagecreatefrom"]($im); + imagepalettetotruecolor($im); $temp1 = imagecreatetruecolor($x_i+$niveau, $y_i); $temp2 = imagecreatetruecolor($x_i+$niveau, $y_i+$niveau); @@ -1068,6 +1088,7 @@ function image_rotation($im, $angle, $crop=false) // Creation de l'image en deux temps // de facon a conserver les GIF transparents $im = $image["fonction_imagecreatefrom"]($im); + imagepalettetotruecolor($im); $im = image_RotateBicubic($im, $angle, true); $image["fonction_image"]($im, "$dest"); imagedestroy($im); @@ -1121,6 +1142,7 @@ function image_gamma($im, $gamma = 0) // Creation de l'image en deux temps // de facon a conserver les GIF transparents $im = $image["fonction_imagecreatefrom"]($im); + imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im_, false); @imagesavealpha($im_,true); @@ -1188,6 +1210,7 @@ function image_sepia($im, $rgb = "896f5e") // Creation de l'image en deux temps // de facon a conserver les GIF transparents $im = $image["fonction_imagecreatefrom"]($im); + imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im_, false); @imagesavealpha($im_,true); @@ -1240,7 +1263,7 @@ function image_renforcement($im, $k=0.5) if ($creer) { $im = $image["fonction_imagecreatefrom"]($im); - + imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im_, false); @imagesavealpha($im_,true); @@ -1323,6 +1346,7 @@ function image_aplatir($im, $format='jpg', $coul='000000') if ($creer) { $im = @$image["fonction_imagecreatefrom"]($im); + imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($x_i, $y_i); if ($image["format_source"] == "gif" AND function_exists('ImageCopyResampled')) { // Si un GIF est transparent, @@ -1403,7 +1427,8 @@ function image_couleur_extraire($img, $x=10, $y=6) { if (ereg("\.jpg", $fichier)) $source = imagecreatefromjpeg($fichier); if (ereg("\.gif", $fichier)) $source = imagecreatefromgif($fichier); if (ereg("\.png", $fichier)) $source = imagecreatefrompng($fichier); - + imagepalettetotruecolor($source); + imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); // get a color -- GitLab