1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.imaging.formats.png.transparencyfilters;
18
19 import static org.apache.commons.imaging.common.BinaryFunctions.read2Bytes;
20
21 import java.io.ByteArrayInputStream;
22 import java.io.IOException;
23
24 import org.apache.commons.imaging.ImagingException;
25
26 public class TransparencyFilterTrueColor extends AbstractTransparencyFilter {
27 private final int transparentColor;
28
29 public TransparencyFilterTrueColor(final byte[] bytes) throws IOException {
30 super(bytes);
31
32 final ByteArrayInputStream is = new ByteArrayInputStream(bytes);
33 final int transparentRed = read2Bytes("transparentRed", is, "tRNS: Missing transparentColor", getByteOrder());
34 final int transparentGreen = read2Bytes("transparentGreen", is, "tRNS: Missing transparentColor", getByteOrder());
35 final int transparentBlue = read2Bytes("transparentBlue", is, "tRNS: Missing transparentColor", getByteOrder());
36
37 transparentColor = (0xff & transparentRed) << 16 | (0xff & transparentGreen) << 8 | (0xff & transparentBlue) << 0;
38
39 }
40
41 @Override
42 public int filter(final int rgb, final int sample) throws ImagingException, IOException {
43 if ((0x00ffffff & rgb) == transparentColor) {
44 return 0x00;
45 }
46
47 return rgb;
48 }
49 }