ID: 40158 Updated by: [EMAIL PROTECTED] Reported By: henus at mail dot ru Status: Feedback Bug Type: GD related Operating System: Windows XP PHP Version: 5.2.0 Assigned To: pajoye New Comment:
Can you provide an image to show what you expect? I did not check your script but having an image will help to really understand what you are trying to achieve. By the way, filters work only with truecolor images, allocate will never fail. Previous Comments: ------------------------------------------------------------------------ [2007-01-18 14:26:28] [EMAIL PROTECTED] >...should be without alpha... Could you plz elaborate? A unified diff would explain it much better, btw. ------------------------------------------------------------------------ [2007-01-18 14:23:38] henus at mail dot ru php-5.2.0\ext\gd\libgd\gd.c Lines 3682-3685: new_pxl = gdImageColorAllocateAlpha(src, (int)r, (int)g, (int)b, a); if (new_pxl == -1) { new_pxl = gdImageColorClosestAlpha(src, (int)r, (int)g, (int)b, a); } ....should be without alpha... ------------------------------------------------------------------------ [2007-01-18 11:03:15] henus at mail dot ru My mistake... correct 12 line in Reproduce code: imagefilter($mask, IMG_FILTER_COLORIZE, -255, -255, -255); ------------------------------------------------------------------------ [2007-01-18 10:40:42] henus at mail dot ru Description: ------------ After using imagefilter (IMG_FILTER_COLORIZE) on transparent png image the result color of translucent pixels is wrong. I.e. the edge of non-transparent part of image, which contain translucent antialiasing area - wrong colored. Reproduce code: --------------- <? $mask=imagecreatefrompng("mask.png"); // http://fort-ross.ru/henus/gd/mask.png (mask for colorize, contain translucent) $imagewidth=imagesx($mask); $imageheight=imagesy($mask); $imagemain=imagecreatetruecolor($imagewidth,$imageheight); imagealphablending($mask, TRUE); imagealphablending($imagemain, TRUE); $color=imagecolorallocate($imagemain, 0, 0, 0); imagefill($imagemain, 0, 0, $color); imagefilter($mask, IMG_FILTER_COLORIZE, -255, -255, 0); imagecopy($imagemain, $mask, 0, 0, 0, 0, $imagewidth, $imageheight); imagepng($imagemain,"result_incorrect.png"); // http://www.fort-ross.ru/henus/gd/result_incorrect.png imagedestroy($mask); imagedestroy($imagemain); ?> Expected result: ---------------- The result image - absolutely black square Actual result: -------------- The result image - black square with gray line (on the edge of mask image) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=40158&edit=1