< prev index next >

test/jdk/javax/imageio/plugins/png/VerifyRGBValuesFromBKGDChunk.java

Print this page

        

*** 21,31 **** * questions. */ /* * @test ! * @bug 6574555 * @summary Test verifies that PNGImageWriter encodes the R, G, B * values of bKGD chunk properly. * @run main VerifyRGBValuesFromBKGDChunk */ --- 21,31 ---- * questions. */ /* * @test ! * @bug 6574555 5109146 * @summary Test verifies that PNGImageWriter encodes the R, G, B * values of bKGD chunk properly. * @run main VerifyRGBValuesFromBKGDChunk */
*** 35,44 **** --- 35,45 ---- import javax.imageio.ImageTypeSpecifier; import javax.imageio.ImageWriter; import javax.imageio.ImageReader; import javax.imageio.ImageIO; import javax.imageio.ImageWriteParam; + import javax.imageio.metadata.IIOInvalidTreeException; import javax.imageio.metadata.IIOMetadata; import javax.imageio.metadata.IIOMetadataNode; import javax.imageio.IIOImage; import javax.imageio.stream.ImageInputStream; import javax.imageio.stream.ImageOutputStream;
*** 46,88 **** import java.io.ByteArrayOutputStream; import java.io.InputStream; public class VerifyRGBValuesFromBKGDChunk { ! public static void main(String[] args) throws IOException { ! int width = 1; ! int height = 1; ! BufferedImage img = new ! BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); ! Iterator<ImageWriter> iterWriter = ! ImageIO.getImageWritersBySuffix("png"); ! ImageWriter writer = iterWriter.next(); ! ImageWriteParam param = writer.getDefaultWriteParam(); ! ImageTypeSpecifier specifier = ! ImageTypeSpecifier. ! createFromBufferedImageType(BufferedImage.TYPE_INT_BGR); ! IIOMetadata encodeMetadata = ! writer.getDefaultImageMetadata(specifier, param); ! // Write png image with bKGD chunk IIOMetadataNode bKGD_rgb = new IIOMetadataNode("bKGD_RGB"); ! String red = "100"; ! String green = "150"; ! String blue = "200"; ! bKGD_rgb.setAttribute("red", red); ! bKGD_rgb.setAttribute("green", green); ! bKGD_rgb.setAttribute("blue", blue); IIOMetadataNode bKGD = new IIOMetadataNode("bKGD"); bKGD.appendChild(bKGD_rgb); IIOMetadataNode encodeRoot = new IIOMetadataNode("javax_imageio_png_1.0"); encodeRoot.appendChild(bKGD); encodeMetadata.mergeTree("javax_imageio_png_1.0", encodeRoot); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageOutputStream ios = ImageIO.createImageOutputStream(baos); writer.setOutput(ios); writer.write(encodeMetadata, --- 47,98 ---- import java.io.ByteArrayOutputStream; import java.io.InputStream; public class VerifyRGBValuesFromBKGDChunk { ! private static IIOMetadata encodeMetadata; ! private static ImageWriter writer; ! private static BufferedImage img; ! private static ImageWriteParam param; ! private static boolean nativeBKGDFail, standardBKGDFail; ! private static IIOMetadataNode bKGD_RGBNode; ! private static final String BKGDRED = "100"; ! private static final String BKGDGREEN = "150"; ! private static final String BKGDBLUE = "200"; ! ! private static void mergeStandardMetadata() throws IIOInvalidTreeException { ! IIOMetadataNode background_rgb = new IIOMetadataNode("BackgroundColor"); ! ! background_rgb.setAttribute("red", BKGDRED); ! background_rgb.setAttribute("green", BKGDGREEN); ! background_rgb.setAttribute("blue", BKGDBLUE); ! ! IIOMetadataNode chroma = new IIOMetadataNode("Chroma"); ! chroma.appendChild(background_rgb); ! IIOMetadataNode encodeRoot = new IIOMetadataNode("javax_imageio_1.0"); ! encodeRoot.appendChild(chroma); ! encodeMetadata.mergeTree("javax_imageio_1.0", encodeRoot); ! } ! private static void mergeNativeMetadata() throws IIOInvalidTreeException { IIOMetadataNode bKGD_rgb = new IIOMetadataNode("bKGD_RGB"); ! ! bKGD_rgb.setAttribute("red", BKGDRED); ! bKGD_rgb.setAttribute("green", BKGDGREEN); ! bKGD_rgb.setAttribute("blue", BKGDBLUE); IIOMetadataNode bKGD = new IIOMetadataNode("bKGD"); bKGD.appendChild(bKGD_rgb); IIOMetadataNode encodeRoot = new IIOMetadataNode("javax_imageio_png_1.0"); encodeRoot.appendChild(bKGD); encodeMetadata.mergeTree("javax_imageio_png_1.0", encodeRoot); + } + private static void writeAndReadMetadata() throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageOutputStream ios = ImageIO.createImageOutputStream(baos); writer.setOutput(ios); writer.write(encodeMetadata,
*** 103,119 **** IIOMetadata decodeMetadata = reader.getImageMetadata(0); IIOMetadataNode decodeRoot = (IIOMetadataNode) decodeMetadata. getAsTree("javax_imageio_png_1.0"); ! bKGD_rgb = (IIOMetadataNode) decodeRoot.getElementsByTagName("bKGD_RGB").item(0); reader.dispose(); ! if (!(red.equals(bKGD_rgb.getAttribute("red")) && ! green.equals(bKGD_rgb.getAttribute("green")) && ! blue.equals(bKGD_rgb.getAttribute("blue")))) { throw new RuntimeException("bKGD RGB values are not stored" + " properly"); } } } --- 113,170 ---- IIOMetadata decodeMetadata = reader.getImageMetadata(0); IIOMetadataNode decodeRoot = (IIOMetadataNode) decodeMetadata. getAsTree("javax_imageio_png_1.0"); ! bKGD_RGBNode = (IIOMetadataNode) decodeRoot.getElementsByTagName("bKGD_RGB").item(0); reader.dispose(); + } + + private static boolean verifyRGBValues() { + return (!(BKGDRED.equals(bKGD_RGBNode.getAttribute("red")) && + BKGDGREEN.equals(bKGD_RGBNode.getAttribute("green")) && + BKGDBLUE.equals(bKGD_RGBNode.getAttribute("blue")))); + } + + private static void VerifyNativeRGBValuesFromBKGDChunk() + throws IOException { + + mergeNativeMetadata(); + writeAndReadMetadata(); + nativeBKGDFail = verifyRGBValues(); + } + + private static void VerifyStandardRGBValuesFromBKGDChunk() + throws IOException { + + mergeStandardMetadata(); + writeAndReadMetadata(); + standardBKGDFail = verifyRGBValues(); + } + + public static void main(String[] args) throws IOException { + int width = 1; + int height = 1; + img = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); + Iterator<ImageWriter> iterWriter = + ImageIO.getImageWritersBySuffix("png"); + writer = iterWriter.next(); + + param = writer.getDefaultWriteParam(); + ImageTypeSpecifier specifier = + ImageTypeSpecifier. + createFromBufferedImageType(BufferedImage.TYPE_INT_BGR); + encodeMetadata = writer.getDefaultImageMetadata(specifier, param); + + // Verify bKGD RGB values after merging metadata using native tree + VerifyNativeRGBValuesFromBKGDChunk(); + + // Verify bKGD RGB values after merging metadata using standard tree + VerifyStandardRGBValuesFromBKGDChunk(); ! if (nativeBKGDFail || standardBKGDFail) { throw new RuntimeException("bKGD RGB values are not stored" + " properly"); } } }
< prev index next >