use of javax.imageio.ImageWriter in project jdk8u_jdk by JetBrains.
the class SetOutput method main.
public static void main(String[] args) throws IOException {
ImageWriter iw = new PNGImageWriter(null);
File f = File.createTempFile("imageio", "tmp");
ImageOutputStream ios = ImageIO.createImageOutputStream(f);
try {
iw.setOutput(ios);
} catch (NullPointerException npe) {
f.delete();
throw new RuntimeException("Got NullPointerException!");
}
f.delete();
}
use of javax.imageio.ImageWriter in project jdk8u_jdk by JetBrains.
the class BooleanAttributes method test.
public static void test(String mimeType, boolean useStreamMeta, String metaXml, String... boolXpaths) throws Exception {
BufferedImage img = new BufferedImage(16, 16, BufferedImage.TYPE_INT_RGB);
ImageWriter iw = ImageIO.getImageWritersByMIMEType(mimeType).next();
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageOutputStream ios = new MemoryCacheImageOutputStream(os);
iw.setOutput(ios);
ImageWriteParam param = null;
IIOMetadata streamMeta = iw.getDefaultStreamMetadata(param);
IIOMetadata imageMeta = iw.getDefaultImageMetadata(new ImageTypeSpecifier(img), param);
IIOMetadata meta = useStreamMeta ? streamMeta : imageMeta;
Source src = new StreamSource(new StringReader(metaXml));
DOMResult dst = new DOMResult();
transform(src, dst);
Document doc = (Document) dst.getNode();
Element node = doc.getDocumentElement();
String metaFormat = node.getNodeName();
// Verify that the default metadata gets formatted correctly.
verify(meta.getAsTree(metaFormat), boolXpaths, false);
meta.mergeTree(metaFormat, node);
// Verify that the merged metadata gets formatte correctly.
verify(meta.getAsTree(metaFormat), boolXpaths, true);
iw.write(streamMeta, new IIOImage(img, null, imageMeta), param);
iw.dispose();
ios.close();
ImageReader ir = ImageIO.getImageReader(iw);
byte[] bytes = os.toByteArray();
if (bytes.length == 0)
throw new AssertionError("Zero length image file");
ByteArrayInputStream is = new ByteArrayInputStream(bytes);
ImageInputStream iis = new MemoryCacheImageInputStream(is);
ir.setInput(iis);
if (useStreamMeta)
meta = ir.getStreamMetadata();
else
meta = ir.getImageMetadata(0);
// Verify again after writing and re-reading the image
verify(meta.getAsTree(metaFormat), boolXpaths, true);
}
use of javax.imageio.ImageWriter in project jdk8u_jdk by JetBrains.
the class BMPWriteParamTest method main.
public static void main(String[] args) {
ImageWriter iw = null;
Iterator writers = ImageIO.getImageWritersByFormatName(format);
if (!writers.hasNext()) {
throw new RuntimeException("No available Image writer for " + format);
}
iw = (ImageWriter) writers.next();
try {
BufferedImage img = createTestImage();
BufferedImage bmp_res = getWriteResult(img, "BMP");
BufferedImage png_res = getWriteResult(img, "PNG");
compare(bmp_res, png_res);
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("Unexpected exception: " + ex);
}
}
use of javax.imageio.ImageWriter in project jdk8u_jdk by JetBrains.
the class BMPWriteParamTest method getWriteResult.
private static BufferedImage getWriteResult(BufferedImage img, String format) throws IOException {
ImageWriter iw = null;
Iterator writers = ImageIO.getImageWritersByFormatName(format);
while (writers.hasNext()) {
iw = (ImageWriter) writers.next();
System.out.println(format + " -> " + iw.toString());
}
if (iw == null) {
throw new RuntimeException("No available Image writer for " + format);
}
ImageWriteParam param = iw.getDefaultWriteParam();
param.setSourceRegion(new Rectangle(10, 10, 31, 31));
param.setSourceSubsampling(3, 3, 0, 0);
IIOMetadata meta = iw.getDefaultImageMetadata(new ImageTypeSpecifier(img), param);
IIOImage iio_img = new IIOImage(img, null, meta);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
iw.setOutput(ios);
iw.write(meta, iio_img, param);
ios.flush();
byte[] ba_image = baos.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(ba_image);
ImageReader ir = null;
Iterator readers = ImageIO.getImageReadersByFormatName(format);
while (readers.hasNext()) {
ir = (ImageReader) readers.next();
System.out.println(format + " -> " + ir.toString());
}
if (ir == null) {
throw new RuntimeException("No available Image reader for " + format);
}
ir.setInput(ImageIO.createImageInputStream(bais));
BufferedImage res = ir.read(0);
return res;
}
use of javax.imageio.ImageWriter in project jdk8u_jdk by JetBrains.
the class RleEncodingTest method doTest.
private static void doTest(BufferedImage src, String compressionType, int compressionMode) throws IOException {
ImageWriter iw = (ImageWriter) ImageIO.getImageWritersBySuffix("bmp").next();
if (iw == null) {
throw new RuntimeException("No available writer. Test failed.");
}
IIOImage iioImg = new IIOImage(src, null, null);
ImageWriteParam param = iw.getDefaultWriteParam();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
iw.setOutput(ios);
System.out.println("Compression Type is " + compressionType);
System.out.println("Compression Mode is " + compressionMode);
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionType(compressionType);
if (compressionMode != ImageWriteParam.MODE_EXPLICIT) {
param.setCompressionMode(compressionMode);
}
try {
iw.write(null, iioImg, param);
} catch (IOException e) {
int bpp = src.getColorModel().getPixelSize();
if (compressionMode == ImageWriteParam.MODE_EXPLICIT) {
if ((compressionType.equals("BI_RLE4") && bpp != 4) || (compressionType.equals("BI_RLE8") && bpp != 8)) {
System.out.println("Can not encode " + bpp + "bpp image as" + compressionType);
return;
} else {
throw new RuntimeException("Unable to encode " + bpp + "bpp image as " + compressionType + ". Test failed");
}
}
}
baos.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ImageInputStream iis = ImageIO.createImageInputStream(bais);
BufferedImage dst = ImageIO.read(iis);
int w = src.getWidth();
int h = src.getHeight();
Object dstPixel = dst.getRaster().getDataElements(w / 2, h / 2, null);
Object srcPixel = src.getRaster().getDataElements(w / 2, h / 2, null);
if ((src.getColorModel().getRed(srcPixel) != dst.getColorModel().getRed(dstPixel)) || (src.getColorModel().getGreen(srcPixel) != dst.getColorModel().getGreen(dstPixel)) || (src.getColorModel().getBlue(srcPixel) != dst.getColorModel().getBlue(dstPixel)) || (src.getColorModel().getAlpha(srcPixel) != dst.getColorModel().getAlpha(dstPixel))) {
showPixel(src, w / 2, h / 2);
showPixel(dst, w / 2, h / 2);
throw new RuntimeException("Colors are different: " + Integer.toHexString(src.getColorModel().getRGB(srcPixel)) + " and " + Integer.toHexString(dst.getColorModel().getRGB(dstPixel)));
}
}
Aggregations