ID: 39273 Updated by: [EMAIL PROTECTED] Reported By: seth at pricepages dot org Status: Bogus Bug Type: GD related Operating System: Mac 10.4 PHP Version: 5.1.6 Assigned To: pajoye New Comment:
Pardon? What is a boolean transparency? Please understand these three things: - The transparent color is one *color*, an index for palette based image or 32bits value for truecolor images. It defines which color is used as the *background* color (like white is the background color of a white paper). - The *alpha* channel of a pixel defines how translucide the pixel has to be. It has nothing to do with the transparent color. - Your image has *no* transparent color but many pixels with various *alpha* levels. Load the result images in your favourite paint programs to see what I mean. The area outside the line is translucide, it is due to the alpha channel. Previous Comments: ------------------------------------------------------------------------ [2006-10-28 14:11:56] seth at pricepages dot org But that has one of the bugs that I pointed out: boolean transparency. The original doesn't have that problem. ------------------------------------------------------------------------ [2006-10-28 14:04:59] [EMAIL PROTECTED] Use the code I just gave you, it does create the resized version (by copying): http://blog.thepimp.net/misc/39273_out.png ------------------------------------------------------------------------ [2006-10-28 13:15:45] seth at pricepages dot org I ran your code before I posted my last comment, but I still don't know what you are implying. The results are exactly as I expect them to be. If this bug is bogus, please tell me how I can create an enlarged version of test.png? It isn't possible without applying a fix. ------------------------------------------------------------------------ [2006-10-28 10:49:54] [EMAIL PROTECTED] "I am aware that the image is fully black, except for variations in alpha. That is why this is a bug related to the alpha channel and not any other." You are not aware that your image is *NOT* fully black. Background color (the transparent color) is not the same than a color with a ALPHA component. Please run the code I gave you, read the results (like the values of the channels in these two pixels, or any other). ------------------------------------------------------------------------ [2006-10-27 17:22:07] seth at pricepages dot org I am aware that the image is fully black, except for variations in alpha. That is why this is a bug related to the alpha channel and not any other. Well, I went in and fixed it myself. The problem was in the function gdImageGetTrueColorPixel(). It assumed that palette images always have binary transparency, with a correct value in im->transparent. Because my source image didn't have a correct value in im->transparent, it was always marked as opaque. This line: return gdTrueColorAlpha(im->red[p], im->green[p], im->blue [p], (im->transparent == p) ? gdAlphaTransparent : gdAlphaOpaque); Needs to be changed to: return gdTrueColorAlpha(im->red[p], im->green[p], im->blue [p], (im->transparent == p) ? gdAlphaTransparent : im->alpha [p]); Making this patch also fixes the same bug in imagecopyresampled(), and who knows what else. Although, I would recommend using gdTrueColorAlpha() at the appropriate point(s) in gdImageCopyResized() instead of gdImageGetTrueColorPixel(). This would eliminate an extra function call, branch, and color lookup. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/39273 -- Edit this bug report at http://bugs.php.net/?id=39273&edit=1