Home  |  Linux  | Mysql  | PHP  | XML
From:Pierre Joye Date:Tue May  6 06:33:06 2008
Subject:Re: [GD-DEVEL] Newbie transparent gif question- possibly solved.
Hi,

On Tue, May 6, 2008 at 2:11 PM, Roger Oberholtzer <roger@opq.se> wrote:

>  > That's not correct. It works as expected by using a color index (not a
>  > color value!) for palette images and a color value for true color
>  > images.
>
>  Put two instances of the same color in the color map. Set the
>  transparent color to the first one. Use the second in the actual
>  drawing. You will not get a transparent image:
>
>  # new file
>  red = gdImageColorAllocate(im, 255,0,0);
>  red = gdImageColorAllocate(im, 255,0,0);
>  gdImageColorTransparent(im, red);
>  # save file
>
>  The image background will be set to the first red (color map index 0).
>  The transparent color will be index 1. The image will not be
>  transparent.

The background will be red (index 0). Why? the image buffer is zero'ed
when you create a new image. That's why the very first allocated color
(which incidently has the index 0) will be the background color.

Then you tell GD to use the index 1 as transparent color. As one is
not equal to zero, you will not get a transparent image. Remember that
it uses the *index* not the color value to detect if a pixel should be
treated as the transparent color (index).

>  Read in a file that already contains red and has that as the background
>  color, and do this:
>
>  # read file
>  red = gdImageColorAllocate(im, 255,0,0);
>  gdImageColorTransparent(im, red);
>  # save file
>
>  The background will no longer be transparent. Even it it was when you
>  read the file.

Please provide a file showing this case.

>  Your sample code is suspect for palette images:
>
>
>  im = gdImageCreate(100,100);
>  for (i=0; I<256;i++) {
>   a[i] = gdImageColorAllocate(im, 255,0,0);
>  }
>  gdImageColorTransparent(im, 23);
>
>
>  What would the background color be? Index 0 (the first defined color).
>  What would the transparent color be? 23, not 0.  Color map item 23 is
>  not the background color. The image background will not be transparent.

Exactly, and that's expected.

Cheers,
-- 
Pierre
http://blog.thepimp.net | http://www.libgd.org
Navigate in group php.gd.devel at sever news.php.net
Previous Next




  
© No Copyright
You are free to use Anything
Site Maintained by Zareef Ahmed
Powered By PHP Consultants