GeoServer : GSIP 100 - merge fast pure java PNG encoder as default PNG encoder
This page last changed on Jan 08, 2014 by aaime.
Merge the new, fast, pure java PNG encoder as the default PNG encoding option for trunk. Add options to choose the encoder from the GUI.
Choose one of: Under Discussion, In Progress, Completed, Rejected, Deferred
Have the best PNG encoding out of the box performance for GeoServer users of any platform
The current PNG encoding in GeoServer can be delegated to two different encoders:
The "png" community module provides a PNG encoder which is pure java, thus available on any platform, striking a better balance between performance and size: the performance is, depending on the test, on par or superior to the native ImageIO one, and the output size is normally just a bit higher than the JDK one (and significantly smaller than the ImageIO based one, for the same compression level).
The "png" community module is based on the open source PNGJ library, a low level PNG decoding/encoding library, plus GeoServer specific optimized pixel extractors (ScanlineProviders) ensuring we do the least work possible when turning a RenderedImage into a PNG output.
The proposal is to merge this new encoder as the default one, on trunk, and change the PNG encoding chooser user interface, switching from a checkbox enabling the native encoder, to a three valued combo box providing the JDK, native and PNGJ, and change at the same time the data model to use an enumeration.
This section should contain feedback provided by PSC members who may have a problem with the proposal.
The code should not present backwards compatibility issues, besides eventual issues in the PNG encoder code itself. The code will be setup so that if the encoding fails for any reason, one of the old encoders will take over.
|Document generated by Confluence on May 14, 2014 23:00|