Re: [GD-DEVEL] Newbie transparent gif question- possibly solved.

[email protected] (Roger Oberholtzer) Tue, 06 May 2008 17:29:12 +0200
Newsgroups php.gd.devel
Message-ID <[email protected]>
On Tue, 2008-05-06 at 14:33 +0200, Pierre Joye wrote: 
> Hi,
> 
> On Tue, May 6, 2008 at 2:11 PM, Roger Oberholtzer <[email protected]> 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).

So you agree. Granted, the coding here is perhaps not what should be
done. But it does demonstrate a red image with red set to be the
transparent color - that will not have a transparent background. This
code is obviously incorrect in execution, if not in intention. 

> >  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.

I will re-break my program and provide you with one. This is more what I
was doing at the beginning of all my problems.  I would make a new image
and define a transparent color as the first color, and save it to a
file. I would then read in the file and once again define (Allocate) the
same RGB values as a color and make it the transparent color - just as I
had done when I first made the image. At which time, my transparency
vanished.

-- 
Roger Oberholtzer

OPQ Systems / Ramböll RST

Ramböll Sverige AB
Kapellgränd 7
P.O. Box 4205
SE-102 65 Stockholm, Sweden

Office: Int +46 8-615 60 20
Mobile: Int +46 70-815 1696