#21763 [Opn->Bgs]: imagecolortransparent &/or imagecolorallocate not working with 2- and 4-bit png
| From: | iliaa@php.net | Date: | Mon, 20 Jan 2003 23:06:30 +0000 |
| Subject: | #21763 [Opn->Bgs]: imagecolortransparent &/or imagecolorallocate not working with 2- and 4-bit png | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-30732@lists.php.net to get a copy of this message | ||
ID: 21763
Updated by: iliaa@php.net
Reported By: tuxedobob@mac.com
-Status: Open
+Status: Bogus
Bug Type: GD related
Operating System: Mac OS X 10.2.3
PHP Version: 4.3.0
New Comment:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
You are making an existing color transparent therefor you don't need to
do ImageColorAllocate(). Simply do imagecolorat() on the pixel with the
color you wish to make transparent and use the return value as the 2nd
argument to imagecolortransparent().
In your particular case this can be done with:
$black = ImageColorAt($image2, 0, 0);
Previous Comments:
------------------------------------------------------------------------
[2003-01-20 15:51:18] sniper@php.net
When you give feedback, please DO NOT USE the page behind the 'Add
Comment' link!!
------------------------------------------------------------------------
[2003-01-20 12:20:57] tuxedobob@mac.com
I'm using the bundled library. And since there seems to be no way to
upload them (even though they're about 5K total), I'll just put the
images here:
Orc: http://homepage.mac.com/tuxedobob/Orc.png
Board: http://homepage.mac.com/tuxedobob/Board.png
------------------------------------------------------------------------
[2003-01-20 09:39:44] iliaa@php.net
Please provide the two images used in your example.
Also, are you using the bundled GD library or the non-bundled one?
------------------------------------------------------------------------
[2003-01-20 02:28:08] tuxedobob@mac.com
In the following script:
<?php
$image2 = ImageCreateFromPNG('images/Monsters/Orc.png');
$image = ImageCreateFromPNG('images/Board.png');
$black = ImageColorAllocate($image2, 0, 0, 0);
imagecolortransparent($image2, $black);
imagecopy($image, $image2, 40*2+8, 40*2+8, 0, 0, 39, 39);
header("Content-type: image/png");
ImagePNG($image);
imagedestroy($image);
imagedestroy($image2);
?>
what I expect to happen is that the black in the 'Orc.png' image will
become transparent when it is copied onto 'Board.png'. This doesn't
happen. The transparency is not recognized at all.
More info:
Orc.png is a 2-bit PNG, with black occupying two of the colors. (It
doesn't work even if it only has one.)
Board.png is a 4-bit PNG with 6 distinct colors (11 copies of black).
If I change the line to
imagecolortransparent('$image2, imagecolorat($image2, 0, 0);
it works correctly. If I change the line use either 2 or 3, as in
imagecolortransparent('$image2, 3);
it works depending on which black (index no. 2 or 3) is actually in the
image. There may be no way around this except to have
imagecolortransparent check by RGB values rather than an index number.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=21763&edit=1