Refine search
@Test(expected = IllegalStateException.class) public void testWriteSequenceNotStarted() throws IOException { // ICNS only supports sizes in multiples of 2 (16, 32, 64, ..., 1024 + 48 and 96) ImageWriter writer = createImageWriter(); try (ImageOutputStream stream = ImageIO.createImageOutputStream(new ByteArrayOutputStream())) { writer.setOutput(stream); BufferedImage image = new BufferedImage(32, 32, BufferedImage.TYPE_INT_ARGB); writer.writeToSequence(new IIOImage(image, null, null), writer.getDefaultWriteParam()); } finally { writer.dispose(); } }
public byte[] writeImageToBytes(Image image, float quality) throws Exception { BufferedImage bi; if (image instanceof BufferedImage && ((BufferedImage) image).getType() == BufferedImage.TYPE_INT_RGB) { bi = (BufferedImage) image; } else { bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = bi.createGraphics(); g.drawImage(image, 0, 0, width, height, null); } ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageWriter imgWrtr = ImageIO.getImageWritersByFormatName("jpg").next(); ImageOutputStream imgOutStrm = ImageIO.createImageOutputStream(baos); imgWrtr.setOutput(imgOutStrm); ImageWriteParam jpgWrtPrm = imgWrtr.getDefaultWriteParam(); jpgWrtPrm.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); jpgWrtPrm.setCompressionQuality(quality); imgWrtr.write(null, new IIOImage(bi, null, null), jpgWrtPrm); imgOutStrm.close(); return baos.toByteArray(); } }
@Test public void testWriteSequence() throws IOException { ImageWriter writer = createImageWriter(); ByteArrayOutputStream output = new ByteArrayOutputStream(); try (ImageOutputStream stream = ImageIO.createImageOutputStream(output)) { writer.setOutput(stream); writer.prepareWriteSequence(null); for (RenderedImage image : getTestData()) { IIOImage iioImage = new IIOImage(image, null, null); writer.writeToSequence(iioImage, writer.getDefaultWriteParam()); } writer.endWriteSequence(); } finally { writer.dispose(); } } }
@Override public void write(RenderedImage image, T params) throws TaskIOException { TaskIOException.require(nonNull(getOutput()), "Cannot call write before opening the write destination"); ImageWriteParam imageWriterParams = newImageWriterParams(params); try { writer.write(null, new IIOImage(image, null, newImageMetadata(image, params, imageWriterParams)), imageWriterParams); } catch (IOException e) { throw new TaskIOException(e); } }
writer.setOutput(ios); ImageWriteParam iwparam = new JPEGImageWriteParam(Locale.getDefault()); iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwparam.setCompressionQuality((quality / 100f)); writer.write( null, new IIOImage( new BufferedImage( realBitmap.getWidth(), realBitmap.getHeight(), BufferedImage.TYPE_BYTE_BINARY),
public void save(@Nonnull File file) throws IOException { try (OutputStream output = file.newOutputStream()) { ImageOutputStream imageOutput = ImageIO.createImageOutputStream(output); if (imageOutput == null) { throw new IOException("ImageIO::createImageOutputStream returned null"); } ImageWriter writer = ImageIO.getImageWritersByFormatName("gif").next(); int index = 0; writer.setOutput(imageOutput); writer.prepareWriteSequence(null); for (GifFrame frame : this) { BufferedImage image = frame.getImage().getImage(); ImageWriteParam writeParam = writer.getDefaultWriteParam(); IIOMetadata ioMetadata = writer.getDefaultImageMetadata(new ImageTypeSpecifier(image), writeParam); IIOImage ioImage = new IIOImage(image, null, ioMetadata); configureGIFFrame(ioMetadata, String.valueOf(frame.getDelay() / 10L), index++, frame.getDisposalMethod().getMethodName(), frame.getLoopCount()); writer.writeToSequence(ioImage, null); } writer.endWriteSequence(); } }
private static void write( BufferedImage img, RasterGeoReference ref, ImageWriter writer ) throws IOException { ImageWriteParam encodeParam = writer.getDefaultWriteParam(); IIOMetadata metadata = writer.getDefaultImageMetadata( null, encodeParam ); TIFFDirectory tiffDir = null; try { tiffDir = TIFFDirectory.createFromMetadata( metadata ); } catch ( IIOInvalidTreeException e ) { throw new IOException( "Could not write the meta data for the GeoTIFF file because: " + e.getLocalizedMessage(), e ); } TIFFField tag = createModelTiePointTag( ref ); if ( tag != null ) { tiffDir.addTIFFField( tag ); } tag = createModelPixelScaleTag( ref ); if ( tag != null ) { tiffDir.addTIFFField( tag ); } tag = createDirectoryTag( ref ); if ( tag != null ) { tiffDir.addTIFFField( tag ); } metadata = tiffDir.getAsMetadata(); IIOImage wImage = new IIOImage( img, null, metadata ); writer.write( wImage ); }
protected InputStream compress(BufferedImage image, String formatName) throws Exception { if (formatName.toLowerCase().equals("jpeg") || formatName.toLowerCase().equals("jpg")) { image = stripAlpha(image); } ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); BufferedOutputStream bos = new BufferedOutputStream(byteArrayOutputStream); if (formatName.toLowerCase().equals("gif")) { formatName = "png"; } Iterator<ImageWriter> writerIter = ImageIO.getImageWritersByFormatName(formatName); ImageWriter writer = writerIter.next(); ImageWriteParam iwp = writer.getDefaultWriteParam(); if (formatName.toLowerCase().equals("jpeg") || formatName.toLowerCase().equals("jpg")) { iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwp.setCompressionQuality(0.85F); iwp.setProgressiveMode(ImageWriteParam.MODE_DEFAULT); } MemoryCacheImageOutputStream output = new MemoryCacheImageOutputStream(bos); writer.setOutput(output); IIOImage iomage = new IIOImage(image, null,null); writer.write(null, iomage, iwp); bos.flush(); return new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); }
private void exportAnimation(String delayTime, File file, ProgressMonitor pm) { ImageWriter imageWriter = ImageIO.getImageWritersByFormatName("gif").next(); try { ImageOutputStream outputStream = ImageIO.createImageOutputStream(file); imageWriter.setOutput(outputStream); imageWriter.prepareWriteSequence(null); pm.beginTask("Exporting time series as animated gif", frames.length); for (int i = 0; i < frames.length; i++) { RenderedImage currentImage = frames[i]; ImageWriteParam writeParameters = imageWriter.getDefaultWriteParam(); IIOMetadata metadata = imageWriter.getDefaultImageMetadata(new ImageTypeSpecifier(currentImage), writeParameters); configure(metadata, delayTime, i); IIOImage image = new IIOImage(currentImage, null, metadata); imageWriter.writeToSequence(image, null); pm.worked(1); } imageWriter.endWriteSequence(); outputStream.close(); pm.done(); } catch (IOException e) { VisatApp.getApp().handleError("Unable to create animated gif", e); } }
/** * Compress {@link BufferedImage} with a given quality into byte array. * * @param bi the {@link BufferedImage} to compres into byte array * @param quality the compressed image quality (1 = 100%, 0.5 = 50%, 0.1 = 10%, etc) * @return The size of compressed data (number of bytes) */ private int compress(BufferedImage bi, float quality) { baos.reset(); final JPEGImageWriteParam params = new JPEGImageWriteParam(null); params.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); params.setCompressionQuality(quality); try (MemoryCacheImageOutputStream mcios = new MemoryCacheImageOutputStream(baos)) { final ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next(); writer.setOutput(mcios); writer.write(null, new IIOImage(bi, null, null), params); } catch (IOException e) { throw new IllegalStateException(e); } return baos.size(); }
public static void write(BufferedImage outputImage, Output output, File outputFile) throws IOException { if (output == Output.JPG) { // Need to strip alpha; BufferedImage img = new BufferedImage(outputImage.getWidth(), outputImage.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D g2d = img.createGraphics(); g2d.drawImage(outputImage, 0, 0, null); g2d.dispose(); outputImage = img; Iterator<javax.imageio.ImageWriter> itor = ImageIO.getImageWritersByFormatName("jpeg"); javax.imageio.ImageWriter writer = itor.next(); ImageWriteParam imageWriteParam = writer.getDefaultWriteParam(); imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); imageWriteParam.setCompressionQuality(0.9f); FileImageOutputStream outputStream = new FileImageOutputStream(outputFile); writer.setOutput(outputStream); IIOImage image = new IIOImage(outputImage, null, null); writer.write(null, image, imageWriteParam); writer.dispose(); } else { ImageIO.write(outputImage, output.getFormat(), outputFile); } }
@Override public void writeImageFile(OutputStream outStream, String format, ByteBuffer imageData, int width, int height) throws IOException { BufferedImage awtImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); Screenshots.convertScreenShot2(imageData.asIntBuffer(), awtImage); ImageWriter writer = ImageIO.getImageWritersByFormatName(format).next(); ImageWriteParam writeParam = writer.getDefaultWriteParam(); if (format.equals("jpg")) { JPEGImageWriteParam jpegParam = (JPEGImageWriteParam) writeParam; jpegParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); jpegParam.setCompressionQuality(0.95f); } awtImage = verticalFlip(awtImage); ImageOutputStream imgOut = new MemoryCacheImageOutputStream(outStream); writer.setOutput(imgOut); IIOImage outputImage = new IIOImage(awtImage, null, null); try { writer.write(null, outputImage, writeParam); } finally { imgOut.close(); writer.dispose(); } }