ID: 27582
User updated by: panda dot management at free dot fr
-Summary: ImageFillToBorder act weird with alpha channel on
alphablending image
Reported By: panda dot management at free dot fr
-Status: Closed
+Status: Open
Bug Type: GD related
Operating System: Windows XP
-PHP Version: 4.3.5RC3
+PHP Version: 4.3.5RC4-dev Mar 14 2004 22:12:48
Assigned To: pajoye
New Comment:
Hello,
Using PHP Version 4.3.5RC4-dev Mar 14 2004 22:12:48.
The first described bug is fixed, but we now loose the ability to use a
fill color with an alpha channel.
Reproduce:
**********
<?php
$res=imagecreatetruecolor(100, 100);
imagealphablending($res, 1);
imagesavealpha($res, 0);
$border=imagecolorallocate($res, 150, 0, 0);
$back=imagecolorallocatealpha($res, 0, 255, 0, 100);
$fill=imagecolorallocatealpha($res, 255, 0, 0, 125);
// This fill the image with a very light layer of green
imagefill($res, 0, 0, $back);
// Draw a diagonal
imageline($res, 0, 0, 100, 100, $border);
// This should fill half with a very light layer of red
imagefilltoborder($res, 100, 50, $border, $fill);
imagepng($res, 'bugtest.png');
imagedestroy($res);
echo '<img src="bugtest.png"/>';
?>
Actual result:
**************
imagefilltoborder doesn't take the alpha channel of fill color into
account.
Expected result:
****************
imagefilltoborder (on alpha blending images) should use alpha channel
on the color to fill, IMHO because:
- when using Non Alpha Blending images, it does.
- and imagefill on alphablending images does also.
Additionnal comment:
********************
Thank you Pierre for the quick fix to the first bug!
Hope this sequel will find its solution soon.
See ya!
Previous Comments:
------------------------------------------------------------------------
[2004-03-13 13:31:30] [EMAIL PROTECTED]
This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
This bug is fixed in HEAD (php5). It will be fixed too in php4
(PHP_4_3) later this weekend.
thanks for the small reproduce script,
pierre
------------------------------------------------------------------------
[2004-03-13 05:10:55] [EMAIL PROTECTED]
Hello,
Verified with HEAD. Segfault in libgd function, infinite recursion.
I will try to fix it asap.
pierre
------------------------------------------------------------------------
[2004-03-13 05:03:55] [EMAIL PROTECTED]
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
------------------------------------------------------------------------
[2004-03-12 18:52:27] panda dot management at free dot fr
Description:
------------
Hello!
ImageFillToBorder seems to act strangely (no output) when using alpha
channel (?) on color and / or bordercolor values, on an alphablending
image.
Configuration:
**************
winxp
apache 2.0.48
php 4.3.4 / 4.3.5RC3
gd2 module loaded
Reproduce code:
---------------
<?php
$im = ImageCreateTrueColor(10, 10);
imagealphablending($im, true);
imagesavealpha($im, false);
$bordercolor=ImageColorAllocateAlpha($im, 0, 0, 0, 2);
$color = ImageColorAllocateAlpha($im, 0, 0, 0, 1);
ImageFillToBorder($im, 5, 5, $bordercolor, $color);
?>
Expected result:
----------------
Do work as supposed to, or output some error.
Actual result:
--------------
Actual result:
**************
Browser hangs and output an alert "Document contains no data".
I'm not experienced enough to give you more debug details... but it
obviously break something...
Additionnal comment:
**************
The values that trigger the bug seems to be pretty much random.
You can reproduce the problem with:
$bordercolor=ImageColorAllocateAlpha($im, 0, 254, 0, 0);
$color = ImageColorAllocateAlpha($im, 0, 255, 255, 75);
Or even reproduce it with:
$bordercolor=ImageColorAllocate($im, 0, 254, 0);
$color = ImageColorAllocateAlpha($im, 0, 255, 255, 75);
(wich is much more logical on an alphablending image...)
But odly it works ok with:
$bordercolor=ImageColorAllocateAlpha($im, 0, 0, 0, 0);
$color = ImageColorAllocateAlpha($im, 0, 255, 255, 75);
I can't find any coherence in the problematic values, except that they
involve alpha channel.
If this is a doc problem, or if I missed something, please forgive this
report...
Anyway, long life to php.
Olivier
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=27582&edit=1