note 39726 added to function.imagecolormatch

From: 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

« previous php.notes (#64851) next »