ID: 40158 User updated by: henus at mail dot ru Reported By: henus at mail dot ru -Status: Feedback +Status: Open Bug Type: GD related Operating System: Windows XP PHP Version: 5.2.0 Assigned To: pajoye New Comment:
it`s not solve my problem.... :( first - about blue color - look at my submission from [18 Jan 11:03am UTC] if use imagefilter($mask, IMG_FILTER_COLORIZE, -255, -255, -255); the result is http://www.fort-ross.ru/henus/gd/result_incorrect.png with legibly visible artefacts. second - image http://blog.thepimp.net/misc/bug40158_result.png also has artefacts at the adges... pixel from edge with coord (95,11) have wrong color red-98 green-98 blue-164 (why is red>0 and green>0 ????????? after substracting 255???) (should be red-0 green-0 blue-102) third - look at my submission from [18 Jan 5:56pm UTC] why is 255-255=126???????????????? one more demo - using imagefilter($mask, IMG_FILTER_COLORIZE, -255, -255, 0); mask - http://fort-ross.ru/henus/gd/mask3.png incorrect image - http://fort-ross.ru/henus/gd/result_incorrect3.png correct image - http://fort-ross.ru/henus/gd/result_correct3.png Previous Comments: ------------------------------------------------------------------------ [2007-01-18 18:51:59] [EMAIL PROTECTED] (rgba(255,0,0,xxx)) should have been (rgba(0,0,255,xxx)) but you noticed it :) ------------------------------------------------------------------------ [2007-01-18 18:51:04] [EMAIL PROTECTED] An absolute black image is not what you should expect. imagefilter($mask, IMG_FILTER_COLORIZE, -255, -255, 0); will replace the white color with blue (you remove all components but the blue): http://blog.thepimp.net/misc/bug40158_filtered_mask.png imagecopy($imagemain, $mask, 0, 0, 0, 0, $imagewidth, $imageheight); will copy it over the $imagemain, the border of the quadrant will be blended over black: http://blog.thepimp.net/misc/bug40158_result.png Each pixel in your circle are rgb(255,255,255) with some alpha value in the edges (and only in the edges). You are substracting 255 to the R and G component, the result is blue. Now, take a look at this image: http://blog.thepimp.net/misc/bug40158_correct_filtered_mask.png It is what you are expecting (if I understand correctly your problem). The edges of the circle have a blue color with various alpha values (rgba(255,0,0,xxx)). You can reproduce it by disabling the alpha blending mode in the mask image (imagealphablending($mask, false); ). The alpha component will be kept and stored in the image instead of being used as a blending value. Let me know if that solves your problem. By the way, COLORIZE uses gdImageColor. The lines you are referring to are in the contrast function. ------------------------------------------------------------------------ [2007-01-18 18:32:16] henus at mail dot ru i expect absolutely black image like http://www.fort-ross.ru/henus/gd/result_correct.png instead of http://www.fort-ross.ru/henus/gd/result_incorrect.png i use colorizing by black for clearness. ------------------------------------------------------------------------ [2007-01-18 18:11:31] henus at mail dot ru correction fo my previous post about php-5.2.0\ext\gd\libgd\gd.c Lines 3682-3688: 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); } if ((y >= 0) && (y < src->sy)) { gdImageSetPixel (src, x, y, new_pxl); in gdImageSetPixel src should be absolutely transparent, with alpha=127 differently it mix colors. ------------------------------------------------------------------------ [2007-01-18 18:09:31] [EMAIL PROTECTED] Please provide an *image* showing what you expect. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/40158 -- Edit this bug report at http://bugs.php.net/?id=40158&edit=1