|
From: <svn...@os...> - 2011-12-26 16:17:05
|
Author: aaime
Date: 2011-12-26 08:16:58 -0800 (Mon, 26 Dec 2011)
New Revision: 38449
Modified:
trunk/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java
trunk/modules/library/coverage/src/test/java/org/geotools/image/ImageWorkerTest.java
Log:
[GEOT-3991] ImageWorker writePNG forces component color model for images that can be encoded as-is
Modified: trunk/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java
===================================================================
--- trunk/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java 2011-12-24 17:03:29 UTC (rev 38448)
+++ trunk/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java 2011-12-26 16:16:58 UTC (rev 38449)
@@ -2411,10 +2411,12 @@
throws IOException
{
// Reformatting this image for PNG.
- if (!paletted) {
+ if (paletted && !(image.getColorModel() instanceof IndexColorModel)) {
+ // we have to reduce colors
+ forceIndexColorModelForGIF(true);
+ } else if(!(image.getColorModel() instanceof ComponentColorModel) && !(image.getColorModel() instanceof IndexColorModel)) {
+ // png supports gray, rgb, rgba and paletted, but not, for example, double and float values
forceComponentColorModel();
- }else{
- forceIndexColorModelForGIF(true);
}
if(LOGGER.isLoggable(Level.FINER))
LOGGER.finer("Encoded input image for png writer");
Modified: trunk/modules/library/coverage/src/test/java/org/geotools/image/ImageWorkerTest.java
===================================================================
--- trunk/modules/library/coverage/src/test/java/org/geotools/image/ImageWorkerTest.java 2011-12-24 17:03:29 UTC (rev 38448)
+++ trunk/modules/library/coverage/src/test/java/org/geotools/image/ImageWorkerTest.java 2011-12-26 16:16:58 UTC (rev 38449)
@@ -388,6 +388,13 @@
readWorker.setImage(ImageIO.read(outFile));
show(readWorker, "Pure PNG8");
outFile.delete();
+
+ // Check we are not expanding to RGB a paletted image
+ worker.setImage(sstImage);
+ assertTrue(sstImage.getColorModel() instanceof IndexColorModel);
+ worker.writePNG(outFile, "FILTERED", 0.75f, false, false);
+ readWorker.setImage(ImageIO.read(outFile));
+ assertTrue(readWorker.getRenderedImage().getColorModel() instanceof IndexColorModel);
}
/**
|