ID: 43508 User updated by: vbhunt at silverfox dot com Reported By: vbhunt at silverfox dot com Status: Bogus Bug Type: GD related Operating System: Windows XP Professional Ver 2SP2 PHP Version: 5.2.5 Assigned To: pajoye New Comment:
>> If a layer has 100% transparency, how is it distinguishable from a >> transparent color? This strikes me as quibbling over a feature clash >> anomaly that causes the function to not operate correctly. >I'm not sure how else I can explain it. It behaves correctly. It does not recreate the visualization as seen in Web browsers and in the major development tools as previously explained, therefore it is broken. Please take the time to try this out in your favorite web browser and then build an example using ImageCreateFromPNG function that preserves transparency from any of the provided images when displayed. I submit that you cannot do it. If you can do it, then please do so and we can document how to achieve transparency to everyone else. >> Let's put it another way. Why doesn't the function ImageCreateFromPNG >> creation preserve the transparency of the white pixels and feed it into >> the image? If it did that, the function would work exactly as expected. >It doesrespect it, the alpha channel is used. If it uses the alpha channel, then why doesn't the transparency show when the image is displayed? >>The function simply does not work because it fails to preserve a key >> characteristic of a PNG file, the transparency of the image. I believe this is the central argument for why it is broken. >What you miss completely is the characteristic of the PNG format. >See: >http://www.w3.org/TR/PNG/#11tRNS Thank you for the reference. While the reference and code below is illuminating, it only confirms the structural assertion (that the pixel is white) but does nothing to illuminate the problem. You are doing a surprisingly good job of avoiding the central issue. Metaphorically you are telling me that the watch parts are working perfectly according to some definition of a standard and a narrow technical definition of transparency. I'm sure that you are correct because you are the expert. However it doesn't solve the user transparency issue at all nor does it illuminate how to solve the problem. I'm pointing out that you cannot tell the time from the watch <em> even if the watch parts are working perfectly.</em> <i>Explicitly, the observed behavior of the function does not preserve the transparency of the image in the sense that displaying the image resource through the standard PHP path (on any browser) fails to preserve the transparency of the original image when it is directly displayed in that same browser.</i> >And the code to show the white pixel (taken at 0,0) with 100% alpha: <?php $filename = 'alert.png'; $rsc = imagecreatefrompng( $filename ); if ( $rsc ) { if (imageistruecolor($rsc)) { echo "TC\n"; } else { echo "NTC\n"; } $tpColor = imagecolortransparent($rsc); printf("%X\n", imagecolorat($rsc, 0,0)); var_dump($tpColor); $msg = $filename . ($tpColor == -1 ) ? "HAS NO TRANSPARENCY\n" : "has transparency!\n"; } else { $msg = $filename . " is not a png file."; } echo $msg; No bug > bogus. Yes, it is transparently obvious that ImageCreateFromPNG does not set the transparent color or preserve it and so it remains a bug. Previous Comments: ------------------------------------------------------------------------ [2008-11-03 22:23:43] [EMAIL PROTECTED] > If a layer has 100% transparency, how is it distinguishable from a > transparent color? This strikes me as quibbling over a feature clash > anomaly that causes the function to not operate correctly. I'm not sure how else I can explain it. It behaves correctly. > Let's put it another way. Why doesn't the function ImageCreateFromPNG > creation preserve the transparency of the white pixels and feed it into > the image? If it did that, the function would work exactly as expected. It doesrespect it, the alpha channel is used. >The function simply does not work because it fails to preserve a key > characteristic of a PNG file, the transparency of the image. What you miss completely is the characteristic of the PNG format. See: http://www.w3.org/TR/PNG/#11tRNS And the code to show the white pixel (taken at 0,0) with 100% alpha: <?php $filename = 'alert.png'; $rsc = imagecreatefrompng( $filename ); if ( $rsc ) { if (imageistruecolor($rsc)) { echo "TC\n"; } else { echo "NTC\n"; } $tpColor = imagecolortransparent($rsc); printf("%X\n", imagecolorat($rsc, 0,0)); var_dump($tpColor); $msg = $filename . ($tpColor == -1 ) ? "HAS NO TRANSPARENCY\n" : "has transparency!\n"; } else { $msg = $filename . " is not a png file."; } echo $msg; No bug > bogus. ------------------------------------------------------------------------ [2008-11-03 21:10:33] vbhunt at silverfox dot com If a layer has 100% transparency, how is it distinguishable from a transparent color? This strikes me as quibbling over a feature clash anomaly that causes the function to not operate correctly. Let's put it another way. Why doesn't the function ImageCreateFromPNG creation preserve the transparency of the white pixels and feed it into the image? If it did that, the function would work exactly as expected. Should the bug be rewritten to say that ImageCreateFromPNG does not preserve the opacity (or transparency) of layers in PNG files? The function simply does not work because it fails to preserve a key characteristic of a PNG file, the transparency of the image. That is the point I've attempted to make. How is this useful if the function cannot preserve key PNG image characteristics? The ImageCreateFromPNG function is broken! It fails to preserve the Transparency of the image layers that is clearly preserved in the rendering from both the leading image development tools and display applications. /Bruce ------------------------------------------------------------------------ [2008-11-03 08:08:16] [EMAIL PROTECTED] "Both ImageReady 7.01 and Photoshop 7.01 show alert.png as having an opacity layer with 0% opacity (i.e. 100% transparency) that covers the rectangle not covered by RGB pixels." Exactly, there is not transparent color set but a white color with 100% transparency. The alpha channel is correctly read and the resulting image can use it correctly. Take the "alert.png" image, the top left pixel is transparent (at 0,0), using a white color with 100% transparency but it is not the bgd color. Or am I still missing your point? ------------------------------------------------------------------------ [2008-11-03 00:55:18] vbhunt at silverfox dot com This is NOT a bogus bug. Both ImageReady 7.01 and Photoshop 7.01 show alert.png as having an opacity layer with 0% opacity (i.e. 100% transparency) that covers the rectangle not covered by RGB pixels. No alpha channels are shown in either ImageReady or Photoshop. Every single one of the submitted test images properly display with proper png transparency in both IE7 and Firefox3 as well as ImageReady 7.01 and Photoshop 7.01 as was originally reported. Yet the ImageCreateFromPNG function cannot find this transparency. Therefore I continue to conclude that this is NOT a bogus bug. Can you demonstrate any working example that preserves transparency using ImageCreateFromPNG? I suspect not. I have provided you with many examples that cause this function to fail, yet have clear transparency as shown in both the development and display tools. ------------------------------------------------------------------------ [2008-11-02 18:30:25] [EMAIL PROTECTED] There is no transparent color (or known as background color). The alert.png for example uses the alpha channel, and the borders of the images is filled with the white color and 100% alpha. A png image can use either the alpha channel or the transparent color but not both. ------------------------------------------------------------------------ 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/43508 -- Edit this bug report at http://bugs.php.net/?id=43508&edit=1
