*.png PNG (Portable Network Graphics) files are a replacement for *.gif files when you don’t need animation. JPEG (Joint Photographic Experts Group) files have better compression for photographs but don’t handle line art as well as *.gif and PNG formats. *.png have been one of the standard image formats in Netscape and Internet Explorer since 1997, though IE (Internet Explorer) support is still only partial. Opera started native support with version 3.51. Apple’s Quicktime supports the format. Firefox and Mozilla, which are derived from Netscape, also properly support *.png. Unlike *.gif files, there were never any patent restrictions and the file format is maintained in an open source environment. One big advantage is that fades to transparent background and antialiasing look good no matter what the background colour. With *.gifs, fades only work for one colour of background, usually white or black. *.pngs use varying degrees of alpha channel transparency to get this effect. If you don’t need the transparent background, use the much more compact *.jpg.
|GIF flower without variable transparency|
|PNG flower with variable transparency|
You might use browsershots to check out PNG support in various browsers by looking at the renderings of this page http://mindprod.com/jgloss/png.html at http://browsershots.org.
*.png compression uses zlib, same as the gnu GZIP and Java jar utilities. On most 8-bit images, the *.png form will be about 11% smaller than the *.gif form. Java 1.4.1+ supports *.png officially in the Advanced Imaging Kit. You can use *.png images with Toolkit.getImage.
Unfortunately Java Web Start in Java version 1.5 and earlier does not support *.png files for the jnlp <icon image, just *.gif and *.jpg. Support for arrived with JDK (Java Development Kit) 1.6.
You can test your browser’s *.png support. You should see an image of a huge spiky red flower to the right of the table above, with proper fades into the transparent background, with no white halos. IE 5.5 and 6.0 do not show it at all. IE can handle some transparent backgrounds but not others. Netscape 4.79 shows it with a purple background. Netscape 8.0+ shows it correctly. Opera, Mozilla, SeaMonkey and Firefox display it correctly. See Masker for details. You can also click here and here for more tests.
The *.png file header looks like this:
|PNG Header Format|
i.e. hex 89504E470D0A1A0A
|chunksize||0x0000000D||4 bytes big-endian binary|
i.e. hex 0x49484452
|width||4 bytes big-endian binary|
|height||4 bytes big-endian binary|
The ImageInfo class will give you the width and height of *.png images (also *.gif and *.jpg) without loading them. It just read the first few bytes of the file.
You can see if your browser displays both styles of PNG image correctly:
Here is the code for a program to draw a simple image, then save it as a *.png file.
There are also animated PNGs (Portable Network Graphicses) that work much like animated GIFs (Graphic Interchange Formats) called Animated PNG, or APNG (Animated Portable Network Graphics). It supports 24-bit colour and 8-bit alpha transparency. Opera 9.5+ and Firefox 3.0+ support it. IE, Safari, Flock and Sea Monkey do not support it. They just display the first frame.
|recommend book⇒PNG: The Definitive Guide|
|Out of print. More than you wanted to know about *.png image format. Available to browse free as an eBook.|
|Greyed out stores probably do not have the item in stock. Try looking for it with a bookfinder.|
This page is posted
Optional Replicator mirror
|no blog for this page||Canadian
Your face IP:[18.104.22.168]
You are visitor number|