#619: Fix WebP Y'CbCr->RGB conversion (now uses rec 601)

This commit is contained in:
Harald Kuhr
2021-08-26 16:47:51 +02:00
parent 6daca00fcd
commit 976e5d6210
9 changed files with 120 additions and 63 deletions
@@ -75,13 +75,28 @@ public class WebPImageReaderTest extends ImageReaderAbstractTest<WebPImageReader
try (ImageInputStream stream = ImageIO.createImageInputStream(getClassLoaderResource("/webp/photo-iccp-adobergb.webp"))) {
reader.setInput(stream);
// We'll read a small portion of the image into a a destination type that use sRGB
// We'll read a small portion of the image into a destination type that use sRGB
ImageReadParam param = new ImageReadParam();
param.setDestinationType(ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_3BYTE_BGR));
param.setSourceRegion(new Rectangle(20, 20));
BufferedImage image = reader.read(0, param);
assertRGBEquals("RGB values differ, incorrect ICC profile or conversion?", 0XFFDC9100, image.getRGB(10, 10), 10);
assertRGBEquals("RGB values differ, incorrect ICC profile or conversion?", 0xFFEA9600, image.getRGB(10, 10), 8);
}
finally {
reader.dispose();
}
}
@Test
public void testRec601ColorConversion() throws IOException {
WebPImageReader reader = createReader();
try (ImageInputStream stream = ImageIO.createImageInputStream(getClassLoaderResource("/webp/blue_tile.webp"))) {
reader.setInput(stream);
BufferedImage image = reader.read(0, null);
assertRGBEquals("RGB values differ, incorrect Y'CbCr -> RGB conversion", 0xFF72AED5, image.getRGB(80, 80), 1);
}
finally {
reader.dispose();
Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B