mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2026-04-30 00:00:01 -04:00
#621 Don't add ICC profile for default gray images
This commit is contained in:
+5
-2
@@ -32,6 +32,7 @@ package com.twelvemonkeys.imageio.plugins.tiff;
|
||||
|
||||
import com.twelvemonkeys.image.ImageUtil;
|
||||
import com.twelvemonkeys.imageio.ImageWriterBase;
|
||||
import com.twelvemonkeys.imageio.color.ColorSpaces;
|
||||
import com.twelvemonkeys.imageio.metadata.Directory;
|
||||
import com.twelvemonkeys.imageio.metadata.Entry;
|
||||
import com.twelvemonkeys.imageio.metadata.tiff.Rational;
|
||||
@@ -849,9 +850,11 @@ public final class TIFFImageWriter extends ImageWriterBase {
|
||||
else {
|
||||
entries.put(TIFF.TAG_SAMPLES_PER_PIXEL, new TIFFEntry(TIFF.TAG_SAMPLES_PER_PIXEL, numBands));
|
||||
|
||||
// Note: Assuming sRGB to be the default RGB interpretation
|
||||
// Embed ICC profile if we have one that:
|
||||
// * is not sRGB (assuming sRGB to be the default RGB interpretation), and
|
||||
// * is not gray scale (assuming photometric either BlackIsZero or WhiteIsZero)
|
||||
ColorSpace colorSpace = colorModel.getColorSpace();
|
||||
if (colorSpace instanceof ICC_ColorSpace && !colorSpace.isCS_sRGB()) {
|
||||
if (colorSpace instanceof ICC_ColorSpace && !colorSpace.isCS_sRGB() && !ColorSpaces.isCS_GRAY(((ICC_ColorSpace) colorSpace).getProfile())) {
|
||||
entries.put(TIFF.TAG_ICC_PROFILE, new TIFFEntry(TIFF.TAG_ICC_PROFILE, ((ICC_ColorSpace) colorSpace).getProfile().getData()));
|
||||
}
|
||||
}
|
||||
|
||||
+23
-1
@@ -554,6 +554,28 @@ public class TIFFImageWriterTest extends ImageWriterAbstractTest<TIFFImageWriter
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteGrayNoProfile() throws IOException {
|
||||
ImageWriter writer = createWriter();
|
||||
|
||||
FastByteArrayOutputStream bytes = new FastByteArrayOutputStream(512);
|
||||
|
||||
try (ImageOutputStream output = ImageIO.createImageOutputStream(bytes)) {
|
||||
writer.setOutput(output);
|
||||
writer.write(new BufferedImage(10, 10, BufferedImage.TYPE_BYTE_GRAY));
|
||||
}
|
||||
|
||||
try (ImageInputStream input = ImageIO.createImageInputStream(bytes.createInputStream())) {
|
||||
ImageReader reader = ImageIO.getImageReaders(input).next();
|
||||
reader.setInput(input);
|
||||
|
||||
TIFFImageMetadata metadata = (TIFFImageMetadata) reader.getImageMetadata(0);
|
||||
Directory ifd = metadata.getIFD();
|
||||
|
||||
assertNull("Unexpected ICC profile for default gray", ifd.getEntryById(TIFF.TAG_ICC_PROFILE));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteParamJPEGQuality() throws IOException {
|
||||
ImageWriter writer = createWriter();
|
||||
@@ -583,7 +605,7 @@ public class TIFFImageWriterTest extends ImageWriterAbstractTest<TIFFImageWriter
|
||||
// Read original LZW compressed TIFF
|
||||
IIOImage original;
|
||||
|
||||
try (ImageInputStream input = ImageIO.createImageInputStream(getClass().getResource("/tiff/a33.tif"))) {
|
||||
try (ImageInputStream input = ImageIO.createImageInputStream(getClassLoaderResource("/tiff/a33.tif"))) {
|
||||
ImageReader reader = ImageIO.getImageReaders(input).next();
|
||||
reader.setInput(input);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user