2009-08-15 6 views
0

J'ai un script en filigrane sur lequel je travaille, les résultats sont bons sur PNG et sur les images JPG mais une image gif, pas très bonne. J'utilise PHP et GDMauvaise qualité de l'image GIF en PHP GD

Ci-dessous vous pouvez voir la différence de qualité du filigrane.

Quelqu'un sait comment améliorer cela?

Pour la version gif J'utilise

$image = imagecreatefromgif($source_file); 
imagecopymerge($image, $watermark, $x, $y, 0, 0, $water_width, $water_height, 65); 
imagegif($image, $source_file); 

image gif = mauvaise qualité gif image http://img2.pict.com/fd/46/00/1471179/0/gif.gif

jpg image = bonne jpg image http://img2.pict.com/82/a1/5a/1471181/0/jpg.jpg

Répondre

5

Les images GIF ont une palette fixe pouvant contenir un maximum de 256 couleurs. Le problème ici est probablement que l'image que vous insérez utilise des couleurs qui ne sont pas disponibles dans l'image cible.

Je n'ai jamais essayé ça, mais ça vaut peut-être le coup. Vous pourriez d'abord essayer de convertir l'image gif en une véritable image couleur, puis faire le tatouage et ensuite le convertir en gif.

$image = imagecreatefromgif($source_file); 
// create a true color image of the same size 
$image2 = imagecreatetruecolor(imagesx($image), imagesy($image)); 
// copy the original gif image on to the true color image 
imagecopy($image2, $image, 0, 0, 0, 0, imagesx($image), imagesy($image)); 
// copy the watermark onto the new true color image 
imagecopymerge($image2, $watermark, $x, $y, 0, 0, $water_width, $water_height, 65); 
// write the new image to disk 
imagegif($image2, $source_file); 

Essayez-le et voyez si cela fait une différence.

Il y a aussi quelques fonctions de manipulation de palette disponibles qui peuvent vous aider:

  1. imagecolormatch()
  2. imagetruecolortopalette()
  3. imagepalettecopy()

Je ne sais pas comment vous les appliquer, mais Je suppose qu'il y a quelques choses que vous pourriez faire pour améliorer les résultats.

+0

+ 1, beaucoup plus complet que ma réponse. – MrMage

2

GIF ne supporte qu'une palette de 256 couleurs. Par conséquent, les couleurs de votre image de filigrane doivent être mappées à cette palette. Cela les a amenés à être rendus et sauvés avec des couleurs différentes qu'avant. En raison de cette petite palette, GIF n'est pas recommandé pour les photos en général, de toute façon.

0

Les images GIF n'auront jamais une belle apparence, car la palette de couleurs est de 256 couleurs. Comme le dit MrMage, la cartographie des couleurs provoque une approximation sévère des vraies couleurs de l'image. Vous êtes mieux avec PNG, ils soutiennent la transparence.

Questions connexes