mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2025-08-03 11:35:29 -04:00
#707 WebP: Fix Alpha support
(cherry picked from commit 8f44cfc43c9b81e41b8ed34bbc957ac05793c419)
This commit is contained in:
parent
055838aaaf
commit
5d623cce9f
@ -511,16 +511,16 @@ final class WebPImageReader extends ImageReaderBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void readAlpha(BufferedImage destination, ImageReadParam param, final int width, final int height) throws IOException {
|
private void readAlpha(BufferedImage destination, ImageReadParam param, final int width, final int height) throws IOException {
|
||||||
|
int compression = (int) lsbBitReader.readBits(2);
|
||||||
|
int filtering = (int) lsbBitReader.readBits(2);
|
||||||
int reserved = (int) lsbBitReader.readBits(2);
|
int reserved = (int) lsbBitReader.readBits(2);
|
||||||
|
int preProcessing = (int) lsbBitReader.readBits(2);
|
||||||
|
|
||||||
if (reserved != 0) {
|
if (reserved != 0) {
|
||||||
// Spec says SHOULD be 0
|
// Spec says SHOULD be 0
|
||||||
processWarningOccurred(String.format("Unexpected 'ALPH' chunk reserved value, expected 0: %d", reserved));
|
processWarningOccurred(String.format("Unexpected 'ALPH' chunk reserved value, expected 0: %d", reserved));
|
||||||
}
|
}
|
||||||
|
|
||||||
int preProcessing = (int) lsbBitReader.readBits(2);
|
|
||||||
int filtering = (int) lsbBitReader.readBits(2);
|
|
||||||
int compression = (int) lsbBitReader.readBits(2);
|
|
||||||
|
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
System.out.println("preProcessing: " + preProcessing);
|
System.out.println("preProcessing: " + preProcessing);
|
||||||
System.out.println("filtering: " + filtering);
|
System.out.println("filtering: " + filtering);
|
||||||
|
@ -1,11 +1,8 @@
|
|||||||
package com.twelvemonkeys.imageio.plugins.webp;
|
package com.twelvemonkeys.imageio.plugins.webp;
|
||||||
|
|
||||||
import static java.util.Arrays.asList;
|
import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest;
|
||||||
|
|
||||||
import java.awt.*;
|
import org.junit.Test;
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import javax.imageio.ImageReadParam;
|
import javax.imageio.ImageReadParam;
|
||||||
@ -13,10 +10,13 @@ import javax.imageio.ImageTypeSpecifier;
|
|||||||
import javax.imageio.spi.ImageReaderSpi;
|
import javax.imageio.spi.ImageReaderSpi;
|
||||||
import javax.imageio.stream.ImageInputStream;
|
import javax.imageio.stream.ImageInputStream;
|
||||||
import javax.imageio.stream.MemoryCacheImageInputStream;
|
import javax.imageio.stream.MemoryCacheImageInputStream;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.image.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.junit.Test;
|
import static java.util.Arrays.asList;
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WebPImageReaderTest
|
* WebPImageReaderTest
|
||||||
@ -141,4 +141,25 @@ public class WebPImageReaderTest extends ImageReaderAbstractTest<WebPImageReader
|
|||||||
reader.dispose();
|
reader.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testReadAlphaTransparent() throws IOException {
|
||||||
|
WebPImageReader reader = createReader();
|
||||||
|
|
||||||
|
try (ImageInputStream stream = ImageIO.createImageInputStream(getClassLoaderResource("/webp/1_webp_a.webp"))) {
|
||||||
|
reader.setInput(stream);
|
||||||
|
BufferedImage image = reader.read(0);
|
||||||
|
|
||||||
|
assertEquals(Transparency.TRANSLUCENT, image.getTransparency());
|
||||||
|
|
||||||
|
assertRGBEquals("Expected transparent corner (0, 0)", 0x00000000, image.getRGB(0, 0) & 0xFF000000, 8);
|
||||||
|
assertRGBEquals("Expected opaque center (200, 150)", 0xff9a4e01, image.getRGB(200, 150), 8);
|
||||||
|
assertRGBEquals("Expected transparent corner (399, 0)", 0x00000000, image.getRGB(399, 0) & 0xFF000000, 8);
|
||||||
|
assertRGBEquals("Expected transparent corner (0, 300)", 0x00000000, image.getRGB(0, 300) & 0xFF000000, 8);
|
||||||
|
assertRGBEquals("Expected transparent corner (399, 300)", 0x00000000, image.getRGB(399, 300) & 0xFF000000, 8);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
reader.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user