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

Reply via email to