IE7 Transparent PNG Implementation

K

Kenny S

Seems like the IE6 team was too lazy..
They have NO IDEA what PNG support will do to transform the internet... yet
they were too lazy to make it work with their "untabbed" browser... Thank
god firefox make them wake up a bit....

http://blogs.msdn.com/ie/
IE7 Transparent PNG Implementation
My name is Sam Fortiner and I'm a developer on the Internet Explorer team
here at Microsoft. I joined the company about a year ago when I was given
the opportunity to work on IE. Since then I've worked on several aspects of
IE and recently settled down into the layout and display team. As part of
my work in this team, I implemented support for per-pixel alpha in PNGs.
Support for per-pixel alpha in PNGs in IE, or transparent PNGs as I'll refer
to them going forward, has been called many things over the last few years.
You can find places around the web where it was called:

a.. A simple bug-fix
b.. A missing and promised feature
c.. An optional feature per the PNG spec
d.. Impossible without a re-write of the display engine in IE
e.. Etc.
As the dev who implemented the support, I can state that it was neither a
bug-fix nor did it require a re-write of the display engine. Instead, it
ended up being somewhere in-between the two and required what I would call
'feature work.' Implementing transparency support for PNG images required a
significant amount of modification to the image decoding and display
pipeline in IE along with a significant amount of new functionality added to
the PNG decoder.

The modifications to IE's image pipeline were required because transparency
in IE has historically only included palette based transparency or binary
transparency. The data structures and image formats necessary to pass
around more complex transparency information were not available. Adding
this information to the pipeline involved touching how all of the image
decoders worked and were displayed. Additionally, functionality to perform
the alpha blending needed to be hooked in.

The PNG decoder itself required a significant amount of work as well. For
example, paletized images with per-index alpha would lose their transparency
information and wouldn't even display in IE. Progressive display using
Adam7 interlacing was only minimally implemented and needed to be fleshed
out. New functionality needed to be added to perform format conversions
that previously hadn't been required. Addressing these types of issues in
the PNG decoder was part of the work that needed to be done to fully support
transparent PNGs.

To help validate the feature work I was doing, I frequently referred to the
following web pages to check the rendering behavior:

a.. http://www.w3.org/Graphics/PNG/inline-alpha.html
b.. http://www.silisoftware.com/png_alpha_transparency/
c.. http://apps.everamber.com/alpha/
d.. http://entropymine.com/jason/testbed/pngtrans/
e.. http://koivi.com/ie-png-transparency/
f.. http://homepage.ntlworld.com/bobosola/
g.. http://www.ncf.ca/~bh447/pngdemo/ (modified so the dragging works in
IE)
h.. http://webfx.eae.net/dhtml/pngbehavior/demo.html
i.. http://www.schaik.com/pngsuite/
j.. http://home.tephras.com/temp/PNG/index2.html
k.. http://www.libpng.org/pub/png/png-rgba32.html
l.. http://trific.ath.cx/web/png/
m.. http://toolkit.crispen.org/formats/png.html
Shortly after checking in the feature, Dave Massy experimented with a couple
other tests such as playing a video underneath a transparent PNG. Overall,
transparent PNG support is looking quite solid in IE7, based on our tests.

There are a couple points I feel are worth mentioning before wrapping this
posting up. First, the type of PNG images that IE can render has been
improved as a result of the work done. Previously, paletized PNG images
with alpha would not render in IE. Now, these types of images should render
correctly. Second, it's worth noting that the AlphaImageLoader should work
in IE7 the same way that it worked in previous versions of IE. The changes
necessary to implement transparent PNG support should not have impacted the
ability to use this filter in any way. This should help with
backwards-compatibility scenarios.

There are also a couple of limitations worth mentioning:

a.. Certain filters may not behave as expected due to how filters are
implemented. Filters work by rendering the content of their attached
element to their work surface and then modifying that surface before
compositing it to the output surface. Because of this, alpha blending of a
transparent PNG with non-binary transparency may lead to unexpected results.
For example, applying a BasicImage filter with an opacity attribute to an
IMG element with a transparent PNG will fill the work surface with the
transparent PNG alpha alpha blended with a solid gray background. The work
surface will then be alpha blended at the specified opacity level with
whatever is under the filter.
b.. MSTime does not support non-binary transparency for PNGs. This is
because MSTime doesn't understand anything other than binary index-based
alpha. Because of this, transparent PNGs in MSTime elements are expected to
continue to render as they do in previous versions of IE.
I'm very interested in providing the most robust transparent PNG
implementation possible. If there are specific scenarios of interest to you
or if you know of other test pages that you would like to bring to my
attention, please do so by posting a comment below.

- Sam

posted Tuesday, April 26, 2005 3:11 PM by ieblog with 79 Comments
 
C

C A Upsdell

Kenny said:
Seems like the IE6 team was too lazy..
They have NO IDEA what PNG support will do to transform the internet... yet
they were too lazy to make it work with their "untabbed" browser... Thank
god firefox make them wake up a bit....

I don't blame the IE6 team. When IE6 was released, it was (for the most
part) the most compliant browser available. I do blame Microsoft's
policy of only upgrading IE with new versions of Windows: IE6 appeared
with Windows XP; and because no replacement has yet appeared for XP,
there has been no replacement for IE6 ... so basically IE has been
standing still while the alternative browsers have been forging ahead.

IE7 is finally on the horizon, but what then? If Microsoft does nothing
after that to improve IE until the NEXT version of Windows, there may be
no further improvements until sometime in the 2010's. I feel that
Microsoft should be encouraged to keep on working on IE even after IE7
appears, and not to slow down until IE completely and correctly supports
ALL the standards.
 
L

Lindsay

No, no. It's good that MS don't release it too often. It's good for the
competition. We don't want FireFox to go the same way as NetScape.
 
C

cybarber

In IE55,IE6 one can easily express PNGalpha by using a VML container image instead of the HTML img elment.

<html xmlns:v = "urn:schemas-microsoft-com:vml">
<head><title>Basic template for PNG alpha transparency expression through VML images in IE6</title>
<style> v \ : * { behavior: url(#default#vml); } </style>
</head>
<body>
<!-- Select IE non-IE browsers by conditional comments -->
<![if !IE]><img src="test.png"><![endif]><!--[if gt IE 5]>
<v:image src="test.png" /><![endif]--></body></html>


Demo page using VML container image to express PNG alpha channels in IE 55, IE6.
http://members.home.nl/cybarber/PNG-IE-VML-SAPI4.htm



"Kenny S" <[email protected]> schreef in bericht Seems like the IE6 team was too lazy..
They have NO IDEA what PNG support will do to transform the internet... yet
they were too lazy to make it work with their "untabbed" browser... Thank
god firefox make them wake up a bit....

http://blogs.msdn.com/ie/
IE7 Transparent PNG Implementation
My name is Sam Fortiner and I'm a developer on the Internet Explorer team
here at Microsoft. I joined the company about a year ago when I was given
the opportunity to work on IE. Since then I've worked on several aspects of
IE and recently settled down into the layout and display team. As part of
my work in this team, I implemented support for per-pixel alpha in PNGs.
Support for per-pixel alpha in PNGs in IE, or transparent PNGs as I'll refer
to them going forward, has been called many things over the last few years.
You can find places around the web where it was called:

a.. A simple bug-fix
b.. A missing and promised feature
c.. An optional feature per the PNG spec
d.. Impossible without a re-write of the display engine in IE
e.. Etc.
As the dev who implemented the support, I can state that it was neither a
bug-fix nor did it require a re-write of the display engine. Instead, it
ended up being somewhere in-between the two and required what I would call
'feature work.' Implementing transparency support for PNG images required a
significant amount of modification to the image decoding and display
pipeline in IE along with a significant amount of new functionality added to
the PNG decoder.

The modifications to IE's image pipeline were required because transparency
in IE has historically only included palette based transparency or binary
transparency. The data structures and image formats necessary to pass
around more complex transparency information were not available. Adding
this information to the pipeline involved touching how all of the image
decoders worked and were displayed. Additionally, functionality to perform
the alpha blending needed to be hooked in.

The PNG decoder itself required a significant amount of work as well. For
example, paletized images with per-index alpha would lose their transparency
information and wouldn't even display in IE. Progressive display using
Adam7 interlacing was only minimally implemented and needed to be fleshed
out. New functionality needed to be added to perform format conversions
that previously hadn't been required. Addressing these types of issues in
the PNG decoder was part of the work that needed to be done to fully support
transparent PNGs.

To help validate the feature work I was doing, I frequently referred to the
following web pages to check the rendering behavior:

a.. http://www.w3.org/Graphics/PNG/inline-alpha.html
b.. http://www.silisoftware.com/png_alpha_transparency/
c.. http://apps.everamber.com/alpha/
d.. http://entropymine.com/jason/testbed/pngtrans/
e.. http://koivi.com/ie-png-transparency/
f.. http://homepage.ntlworld.com/bobosola/
g.. http://www.ncf.ca/~bh447/pngdemo/ (modified so the dragging works in
IE)
h.. http://webfx.eae.net/dhtml/pngbehavior/demo.html
i.. http://www.schaik.com/pngsuite/
j.. http://home.tephras.com/temp/PNG/index2.html
k.. http://www.libpng.org/pub/png/png-rgba32.html
l.. http://trific.ath.cx/web/png/
m.. http://toolkit.crispen.org/formats/png.html
Shortly after checking in the feature, Dave Massy experimented with a couple
other tests such as playing a video underneath a transparent PNG. Overall,
transparent PNG support is looking quite solid in IE7, based on our tests.

There are a couple points I feel are worth mentioning before wrapping this
posting up. First, the type of PNG images that IE can render has been
improved as a result of the work done. Previously, paletized PNG images
with alpha would not render in IE. Now, these types of images should render
correctly. Second, it's worth noting that the AlphaImageLoader should work
in IE7 the same way that it worked in previous versions of IE. The changes
necessary to implement transparent PNG support should not have impacted the
ability to use this filter in any way. This should help with
backwards-compatibility scenarios.

There are also a couple of limitations worth mentioning:

a.. Certain filters may not behave as expected due to how filters are
implemented. Filters work by rendering the content of their attached
element to their work surface and then modifying that surface before
compositing it to the output surface. Because of this, alpha blending of a
transparent PNG with non-binary transparency may lead to unexpected results.
For example, applying a BasicImage filter with an opacity attribute to an
IMG element with a transparent PNG will fill the work surface with the
transparent PNG alpha alpha blended with a solid gray background. The work
surface will then be alpha blended at the specified opacity level with
whatever is under the filter.
b.. MSTime does not support non-binary transparency for PNGs. This is
because MSTime doesn't understand anything other than binary index-based
alpha. Because of this, transparent PNGs in MSTime elements are expected to
continue to render as they do in previous versions of IE.
I'm very interested in providing the most robust transparent PNG
implementation possible. If there are specific scenarios of interest to you
or if you know of other test pages that you would like to bring to my
attention, please do so by posting a comment below.

- Sam

posted Tuesday, April 26, 2005 3:11 PM by ieblog with 79 Comments
 
G

Guest

I don't know why people keep talking about FIREFOX. I have both FireFox and
IE in my pc. I don't see there is anything difference. If you chose to use
FireFox is fine too. But I think they are pretty much working the same.
Thanks.

cybarber said:
In IE55,IE6 one can easily express PNGalpha by using a VML container image instead of the HTML img elment.

<html xmlns:v = "urn:schemas-microsoft-com:vml">
<head><title>Basic template for PNG alpha transparency expression through VML images in IE6</title>
<style> v \ : * { behavior: url(#default#vml); } </style>
</head>
<body>
<!-- Select IE non-IE browsers by conditional comments -->
<![if !IE]><img src="test.png"><![endif]><!--[if gt IE 5]>
<v:image src="test.png" /><![endif]--></body></html>


Demo page using VML container image to express PNG alpha channels in IE 55, IE6.
http://members.home.nl/cybarber/PNG-IE-VML-SAPI4.htm



"Kenny S" <[email protected]> schreef in bericht Seems like the IE6 team was too lazy..
They have NO IDEA what PNG support will do to transform the internet... yet
they were too lazy to make it work with their "untabbed" browser... Thank
god firefox make them wake up a bit....

http://blogs.msdn.com/ie/
IE7 Transparent PNG Implementation
My name is Sam Fortiner and I'm a developer on the Internet Explorer team
here at Microsoft. I joined the company about a year ago when I was given
the opportunity to work on IE. Since then I've worked on several aspects of
IE and recently settled down into the layout and display team. As part of
my work in this team, I implemented support for per-pixel alpha in PNGs.
Support for per-pixel alpha in PNGs in IE, or transparent PNGs as I'll refer
to them going forward, has been called many things over the last few years.
You can find places around the web where it was called:

a.. A simple bug-fix
b.. A missing and promised feature
c.. An optional feature per the PNG spec
d.. Impossible without a re-write of the display engine in IE
e.. Etc.
As the dev who implemented the support, I can state that it was neither a
bug-fix nor did it require a re-write of the display engine. Instead, it
ended up being somewhere in-between the two and required what I would call
'feature work.' Implementing transparency support for PNG images required a
significant amount of modification to the image decoding and display
pipeline in IE along with a significant amount of new functionality added to
the PNG decoder.

The modifications to IE's image pipeline were required because transparency
in IE has historically only included palette based transparency or binary
transparency. The data structures and image formats necessary to pass
around more complex transparency information were not available. Adding
this information to the pipeline involved touching how all of the image
decoders worked and were displayed. Additionally, functionality to perform
the alpha blending needed to be hooked in.

The PNG decoder itself required a significant amount of work as well. For
example, paletized images with per-index alpha would lose their transparency
information and wouldn't even display in IE. Progressive display using
Adam7 interlacing was only minimally implemented and needed to be fleshed
out. New functionality needed to be added to perform format conversions
that previously hadn't been required. Addressing these types of issues in
the PNG decoder was part of the work that needed to be done to fully support
transparent PNGs.

To help validate the feature work I was doing, I frequently referred to the
following web pages to check the rendering behavior:

a.. http://www.w3.org/Graphics/PNG/inline-alpha.html
b.. http://www.silisoftware.com/png_alpha_transparency/
c.. http://apps.everamber.com/alpha/
d.. http://entropymine.com/jason/testbed/pngtrans/
e.. http://koivi.com/ie-png-transparency/
f.. http://homepage.ntlworld.com/bobosola/
g.. http://www.ncf.ca/~bh447/pngdemo/ (modified so the dragging works in
IE)
h.. http://webfx.eae.net/dhtml/pngbehavior/demo.html
i.. http://www.schaik.com/pngsuite/
j.. http://home.tephras.com/temp/PNG/index2.html
k.. http://www.libpng.org/pub/png/png-rgba32.html
l.. http://trific.ath.cx/web/png/
m.. http://toolkit.crispen.org/formats/png.html
Shortly after checking in the feature, Dave Massy experimented with a couple
other tests such as playing a video underneath a transparent PNG. Overall,
transparent PNG support is looking quite solid in IE7, based on our tests.

There are a couple points I feel are worth mentioning before wrapping this
posting up. First, the type of PNG images that IE can render has been
improved as a result of the work done. Previously, paletized PNG images
with alpha would not render in IE. Now, these types of images should render
correctly. Second, it's worth noting that the AlphaImageLoader should work
in IE7 the same way that it worked in previous versions of IE. The changes
necessary to implement transparent PNG support should not have impacted the
ability to use this filter in any way. This should help with
backwards-compatibility scenarios.

There are also a couple of limitations worth mentioning:

a.. Certain filters may not behave as expected due to how filters are
implemented. Filters work by rendering the content of their attached
element to their work surface and then modifying that surface before
compositing it to the output surface. Because of this, alpha blending of a
transparent PNG with non-binary transparency may lead to unexpected results.
For example, applying a BasicImage filter with an opacity attribute to an
IMG element with a transparent PNG will fill the work surface with the
transparent PNG alpha alpha blended with a solid gray background. The work
surface will then be alpha blended at the specified opacity level with
whatever is under the filter.
b.. MSTime does not support non-binary transparency for PNGs. This is
because MSTime doesn't understand anything other than binary index-based
alpha. Because of this, transparent PNGs in MSTime elements are expected to
continue to render as they do in previous versions of IE.
I'm very interested in providing the most robust transparent PNG
implementation possible. If there are specific scenarios of interest to you
or if you know of other test pages that you would like to bring to my
attention, please do so by posting a comment below.

- Sam

posted Tuesday, April 26, 2005 3:11 PM by ieblog with 79 Comments
 
J

JoeM

agreed for the most part there are somethings in firefox I like, download
manager, and some css support. BUt the Big thing that firfox stands on is
security, which from my test are not any more secure then IE or any other
browser for that matter.

Will keep supporting IE until something better comes along.

MS-User said:
I don't know why people keep talking about FIREFOX. I have both FireFox and
IE in my pc. I don't see there is anything difference. If you chose to use
FireFox is fine too. But I think they are pretty much working the same.
Thanks.

cybarber said:
In IE55,IE6 one can easily express PNGalpha by using a VML container
image instead of the HTML img elment.

<html xmlns:v = "urn:schemas-microsoft-com:vml">
<head><title>Basic template for PNG alpha transparency expression through
VML images in IE6</title>
<style> v \ : * { behavior: url(#default#vml); } </style>
</head>
<body>
<!-- Select IE non-IE browsers by conditional comments -->
<![if !IE]><img src="test.png"><![endif]><!--[if gt IE 5]>
<v:image src="test.png" /><![endif]--></body></html>


Demo page using VML container image to express PNG alpha channels in IE
55, IE6.
http://members.home.nl/cybarber/PNG-IE-VML-SAPI4.htm



"Kenny S" <[email protected]> schreef in bericht
Seems like the IE6 team was too lazy..
They have NO IDEA what PNG support will do to transform the internet...
yet
they were too lazy to make it work with their "untabbed" browser...
Thank
god firefox make them wake up a bit....

http://blogs.msdn.com/ie/
IE7 Transparent PNG Implementation
My name is Sam Fortiner and I'm a developer on the Internet Explorer
team
here at Microsoft. I joined the company about a year ago when I was
given
the opportunity to work on IE. Since then I've worked on several
aspects of
IE and recently settled down into the layout and display team. As part
of
my work in this team, I implemented support for per-pixel alpha in
PNGs.
Support for per-pixel alpha in PNGs in IE, or transparent PNGs as I'll
refer
to them going forward, has been called many things over the last few
years.
You can find places around the web where it was called:

a.. A simple bug-fix
b.. A missing and promised feature
c.. An optional feature per the PNG spec
d.. Impossible without a re-write of the display engine in IE
e.. Etc.
As the dev who implemented the support, I can state that it was neither
a
bug-fix nor did it require a re-write of the display engine. Instead,
it
ended up being somewhere in-between the two and required what I would
call
'feature work.' Implementing transparency support for PNG images
required a
significant amount of modification to the image decoding and display
pipeline in IE along with a significant amount of new functionality
added to
the PNG decoder.

The modifications to IE's image pipeline were required because
transparency
in IE has historically only included palette based transparency or
binary
transparency. The data structures and image formats necessary to pass
around more complex transparency information were not available.
Adding
this information to the pipeline involved touching how all of the image
decoders worked and were displayed. Additionally, functionality to
perform
the alpha blending needed to be hooked in.

The PNG decoder itself required a significant amount of work as well.
For
example, paletized images with per-index alpha would lose their
transparency
information and wouldn't even display in IE. Progressive display using
Adam7 interlacing was only minimally implemented and needed to be
fleshed
out. New functionality needed to be added to perform format
conversions
that previously hadn't been required. Addressing these types of issues
in
the PNG decoder was part of the work that needed to be done to fully
support
transparent PNGs.

To help validate the feature work I was doing, I frequently referred to
the
following web pages to check the rendering behavior:

a.. http://www.w3.org/Graphics/PNG/inline-alpha.html
b.. http://www.silisoftware.com/png_alpha_transparency/
c.. http://apps.everamber.com/alpha/
d.. http://entropymine.com/jason/testbed/pngtrans/
e.. http://koivi.com/ie-png-transparency/
f.. http://homepage.ntlworld.com/bobosola/
g.. http://www.ncf.ca/~bh447/pngdemo/ (modified so the dragging works
in
IE)
h.. http://webfx.eae.net/dhtml/pngbehavior/demo.html
i.. http://www.schaik.com/pngsuite/
j.. http://home.tephras.com/temp/PNG/index2.html
k.. http://www.libpng.org/pub/png/png-rgba32.html
l.. http://trific.ath.cx/web/png/
m.. http://toolkit.crispen.org/formats/png.html
Shortly after checking in the feature, Dave Massy experimented with a
couple
other tests such as playing a video underneath a transparent PNG.
Overall,
transparent PNG support is looking quite solid in IE7, based on our
tests.

There are a couple points I feel are worth mentioning before wrapping
this
posting up. First, the type of PNG images that IE can render has been
improved as a result of the work done. Previously, paletized PNG
images
with alpha would not render in IE. Now, these types of images should
render
correctly. Second, it's worth noting that the AlphaImageLoader should
work
in IE7 the same way that it worked in previous versions of IE. The
changes
necessary to implement transparent PNG support should not have impacted
the
ability to use this filter in any way. This should help with
backwards-compatibility scenarios.

There are also a couple of limitations worth mentioning:

a.. Certain filters may not behave as expected due to how filters are
implemented. Filters work by rendering the content of their attached
element to their work surface and then modifying that surface before
compositing it to the output surface. Because of this, alpha blending
of a
transparent PNG with non-binary transparency may lead to unexpected
results.
For example, applying a BasicImage filter with an opacity attribute to
an
IMG element with a transparent PNG will fill the work surface with the
transparent PNG alpha alpha blended with a solid gray background. The
work
surface will then be alpha blended at the specified opacity level with
whatever is under the filter.
b.. MSTime does not support non-binary transparency for PNGs. This
is
because MSTime doesn't understand anything other than binary
index-based
alpha. Because of this, transparent PNGs in MSTime elements are
expected to
continue to render as they do in previous versions of IE.
I'm very interested in providing the most robust transparent PNG
implementation possible. If there are specific scenarios of interest
to you
or if you know of other test pages that you would like to bring to my
attention, please do so by posting a comment below.

- Sam

posted Tuesday, April 26, 2005 3:11 PM by ieblog with 79 Comments
 
D

DevilsPGD

In message <[email protected]> "JoeM"
agreed for the most part there are somethings in firefox I like, download
manager, and some css support. BUt the Big thing that firfox stands on is
security, which from my test are not any more secure then IE or any other
browser for that matter.

From your tests? What did you test?
Will keep supporting IE until something better comes along.

It already has.
 
J

JoeM

I went to spyware infected websites, and the sites downloading programs and
tried to install them with FireFox 1.02. Norton & MSAS both flag files that
should not be installing in the background. This did not happen with IE
sp2.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top