note 39726 added to function.imagecolormatch
| From: | Samantha at rn2 dot php dot net | Date: | Mon, 09 Feb 2004 00:14:41 +0000 |
| Subject: | note 39726 added to function.imagecolormatch | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-64851@lists.php.net to get a copy of this message | ||
This function is a godsend! It works exactly as documented.
I'm working on an application where I need to take a transparent GIF, matte the GIF on a user
defined background color, and finally scale the GIF based on a user defined %.
The only way I could get this to work so that the final image was high quality, ie: no jagged edges,
and a smooth scale, was to convert the GIF to a JPG, and then copy the JPG into a new GIF image like
this:
// open transparent gif
$GIFimg = imagecreatefromgif($file_path);
// create jpg image
$JPGimg = imagecreatetruecolor($width, $height);
// copy GIF to JPG
imagecopy($JPGimg, $GIFimg, 0, 0, 0, 0, $width, $height);
// create a true color image
$JPGscaled = imagecreatetruecolor($n_width, $n_height);
// scale the new JPG using the truecolor image
imagecopyresampled($JPGscaled, $JPGimg, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// create final GIF image
$GIFfinal = imagecreate($n_width, $n_height);
// copy the scaled JPG back to a GIF
imagecopymerge($GIFfinal, $JPGscaled, 0, 0, 0, 0, $n_width, $n_height, 100);
This worked great except the final step, copying the JPG to a GIF. If the JPG had too many colors,
the function would index the colors to make it a palette image. So what would end up happening is
the final image contained INCORRECT colors.
Adding this one line at the bottom of the code fixed everything.
imagecolormatch($JPGscaled, $GIFfinal);
I hope this helps anyone who is converting images back and forth and dealing with palette issues and
color correction. Also, be aware that the above code is a sample and will not work by copying and
pasting.
----
Manual Page -- http://www.php.net/manual/en/function.imagecolormatch.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+39726
Delete -- http://master.php.net/manage/user-notes.php?action=delete+39726&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+39726&report=yes
Search -- http://master.php.net/manage/user-notes.php