note 17924 added to function.imagecolorresolve

From: Date: Thu, 03 Jan 2002 08:55:32 +0000
Subject: note 17924 added to function.imagecolorresolve
Groups: php.notes 
Request: Send a blank email to php-notes+get-24364@lists.php.net to get a copy of this message
Okay, so sometimes it's really IMPORTANT to get the exact color you want, only it's not *IN* the Image, and ImageColorResolve just isn't "close enough". The following code is a disgustingly gross hack, rather slow, but it does that. $colorcount = array(); for ($x = 0; $x < $width; $x++){ for ($y = 0; $y < $height; $y++){ $colorindex = imagecolorat($jpg, $x, $y); if (!isset($colorcount[$colorindex])){ $colorcount[$colorindex] = 1; } else{ $colorcount[$colorindex]++; } } } asort($colorcount); reset($colorcount); $black = imagecolorexact($jpg, 0, 0, 0); if ($black == -1){ $goner = key($colorcount); $rgb = imagecolorsforindex($jpg, $goner); #error_log("Need black: About to kill $goner ($rgb[red], $rgb[green], $rgb[blue]) which was only used in $colorcount[$goner] pixels", 0); unset($colorcount[$goner]); imagecolordeallocate($jpg, $goner); $black = imagecolorallocate($jpg, 0, 0, 0); } if ($black == -1){ $black = imagecolorresolve($jpg, 0, 0, 0); #error_log("Damn! STILL couldn't allocate the color!", 0); } -- http://www.php.net/manual/en/function.imagecolorresolve.php http://master.php.net/manage/user-notes.php?action=edit+17924 http://master.php.net/manage/user-notes.php?action=delete+17924 http://master.php.net/manage/user-notes.php?action=reject+17924

« previous php.notes (#24364) next »