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

Reply via email to