ID: 40158
User updated by: henus at mail dot ru
Reported By: henus at mail dot ru
Status: Open
Bug Type: GD related
Operating System: Windows XP
PHP Version: 5.2.0
Assigned To: pajoye
New Comment:
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.
Previous Comments:
------------------------------------------------------------------------
[2007-01-18 18:09:31] [EMAIL PROTECTED]
Please provide an *image* showing what you expect.
------------------------------------------------------------------------
[2007-01-18 17:56:25] henus at mail dot ru
i create black image and overlay it by colorized
white-truecolor-png24-image ( http://fort-ross.ru/henus/gd/mask.png )
the result of colorize like:
imagefilter($mask, IMG_FILTER_COLORIZE, -255, -255, -255);
is image:
http://www.fort-ross.ru/henus/gd/result_incorrect.png
which contain artefacts...
also, the result of such script (
http://fort-ross.ru/henus/gd/demo2.phps )
is:
is truecolor - 1
before - Array ( [red] => 255 [green] => 255 [blue] => 255 [alpha] =>
63 )
wrong result, using filter - Array ( [red] => 126 [green] => 126 [blue]
=> 126 [alpha] => 31 )
wrong result, using imagecolorallocatealpha and imagesetpixel - Array (
[red] => 126 [green] => 126 [blue] => 126 [alpha] => 31 )
correct result, using imagefill, imagecolorallocatealpha and
imagesetpixel - Array ( [red] => 0 [green] => 0 [blue] => 0 [alpha] =>
63 )
I.e.
colorizing pixel ( [red] => 255 [green] => 255 [blue] => 255 [alpha] =>
63 ) to black
should be with ( [red] => 0 [green] => 0 [blue] => 0 [alpha] => 63 ),
not ( [red] => 126 [green] => 126 [blue] => 126 [alpha] => 31 )
------------------------------------------------------------------------
[2007-01-18 15:22:49] [EMAIL PROTECTED]
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.
------------------------------------------------------------------------
[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...
------------------------------------------------------------------------
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