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); } }
page.imageName = outputFile.getName(); BufferedImage canvas = new BufferedImage(width, height, getBufferedImageType(settings.format)); Graphics2D g = (Graphics2D)canvas.getGraphics(); if (!settings.silent) System.out.println("Writing " + canvas.getWidth() + "x" + canvas.getHeight() + ": " + outputFile); canvas = newImage; Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg"); ImageWriter writer = writers.next(); ImageWriteParam param = writer.getDefaultWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(settings.jpegQuality); ios = ImageIO.createImageOutputStream(outputFile); writer.setOutput(ios); writer.write(null, new IIOImage(canvas, null, null), param); } else { if (settings.premultiplyAlpha) canvas.getColorModel().coerceData(canvas.getRaster(), true); ImageIO.write(canvas, "png", outputFile); if (ios != null) { try { ios.close(); } catch (Exception ignored) {
ImageInputStream inputStream = ImageIO.createImageInputStream(file); try { Iterator<ImageReader> readers = ImageIO.getImageReaders(inputStream); if (type <= 0 || type == original.getType()) { image = original; image = new BufferedImage(original.getWidth(), original.getHeight(), type); Graphics2D graphics = image.createGraphics(); ImageOutputStream stream = ImageIO.createImageOutputStream(output); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionType(param.getCompressionTypes()[compression]); writer.write(null, new IIOImage(image, null, null), param); System.err.println("Write time: " + (System.currentTimeMillis() - start) + " ms"); stream.close();
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(); } }
public static byte[] toJpg(BufferedImage image) throws IOException { // Start with a white layer to have images with an alpha layer handled correctly. BufferedImage newBufferedImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB); newBufferedImage.createGraphics().drawImage(image, 0, 0, Color.WHITE, null); // Manually get the ImageWriter to be able to adjust quality ImageWriter writer = ImageIO.getImageWritersBySuffix("jpg").next(); ImageWriteParam imageWriterParam = writer.getDefaultWriteParam(); imageWriterParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); imageWriterParam.setCompressionQuality(1f); ByteArrayOutputStream output = new ByteArrayOutputStream(); writer.setOutput(new MemoryCacheImageOutputStream(output)); writer.write(null, new IIOImage(newBufferedImage, null, null), imageWriterParam); writer.dispose(); return output.toByteArray(); }
Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName(getFormatName(format)); if (iter.hasNext()) { writer = (ImageWriter) iter.next(); try (ImageOutputStream ios = ImageIO.createImageOutputStream(stream)) { 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), null, null), iwparam); ios.flush(); writer.dispose();
@Override public void saveToFile(TexturePacker.Settings settings, BufferedImage image, File file) throws IOException { ImageOutputStream ios = null; try { BufferedImage newImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_3BYTE_BGR); newImage.getGraphics().drawImage(image, 0, 0, null); image = newImage; Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg"); ImageWriter writer = writers.next(); ImageWriteParam param = writer.getDefaultWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(quality); ios = ImageIO.createImageOutputStream(file); writer.setOutput(ios); writer.write(null, new IIOImage(image, null, null), param); } finally { if (ios != null) { try { ios.close(); } catch (Exception ignored) { } } } } }
throw new IIOException(Errors.format(ErrorKeys.NULL_ARGUMENT_$1, "stream")); final ImageWriter writer = IMAGEIO_GIF_IMAGE_WRITER_SPI.createWriterInstance(); final ImageWriteParam param = writer.getDefaultWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionType(compression); param.setCompressionQuality(compressionRate); writer.setOutput(stream); writer.write(null, new IIOImage(image, null, null), param); } finally { try { stream.close(); } catch (Throwable e) { if (LOGGER.isLoggable(Level.FINEST))
@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(); } }
new BufferedImage( (int) (chart.getWidth() * scaleFactor), (int) (chart.getHeight() * scaleFactor), BufferedImage.TYPE_INT_RGB); Graphics2D graphics2D = bufferedImage.createGraphics(); ImageIO.getImageWritersByFormatName(bitmapFormat.toString().toLowerCase()); if (writers.hasNext()) { ImageWriter writer = writers.next(); ImageWriteParam iwp = writer.getDefaultWriteParam(); IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, iwp); if (metadata.isReadOnly() || !metadata.isStandardMetadataFormatSupported()) { throw new IllegalArgumentException( writer.setOutput(output); IIOImage image = new IIOImage(bufferedImage, null, metadata); try { writer.write(null, image, iwp);
BufferedImage bufferedImage = new BufferedImage(temp.getWidth(null), temp.getHeight(null), BufferedImage.TYPE_INT_RGB); Graphics g = bufferedImage.createGraphics(); FileOutputStream out = new FileOutputStream(resizedFile)) { ImageWriter imageWriter = ImageIO.getImageWritersBySuffix("jpg").next(); ImageOutputStream ios = ImageIO.createImageOutputStream(out); imageWriter.setOutput(ios); IIOMetadata imageMetaData = imageWriter.getDefaultImageMetadata(new ImageTypeSpecifier(bufferedImage), null); JPEGImageWriteParam jpegParams = (JPEGImageWriteParam) imageWriter.getDefaultWriteParam(); jpegParams.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT); jpegParams.setCompressionQuality(quality); imageWriter.write(imageMetaData, new IIOImage(bufferedImage, null, null), jpegParams);
@Test public void lossless() throws Exception { File f = File.createTempFile("test-jpeg2000-lossless", ".jp2"); f.deleteOnExit(); Iterator<ImageWriter> writers = ImageIO.getImageWritersBySuffix("jp2"); assertTrue(writers.hasNext()); ImageWriter writer = writers.next(); J2KImageWriteParam writeParams = (J2KImageWriteParam) writer.getDefaultWriteParam(); writeParams.setLossless(true); // writeParams.setFilter(J2KImageWriteParam.FILTER_53); // writeParams.setEncodingRate(64.0f); // writeParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); // writeParams.setCompressionType("JPEG2000"); // writeParams.setCompressionQuality(1.0f); ImageOutputStream ios = ImageIO.createImageOutputStream(f); writer.setOutput(ios); writer.write(null, new IIOImage(image, null, null), writeParams); writer.dispose(); ios.close(); assertTrue("Expected file size > 128kB", f.length() > 128*1024); //System.out.println(f.length()); BufferedImage read = ImageIO.read(f); assertEquals(SIZE, read.getWidth()); }
private byte[] bufferedImageToJPEG(ImageInfo imageInfo, int[] pixels) throws Exception { BufferedImage bufferedImage = new BufferedImage(imageInfo.width, imageInfo.height, BufferedImage.TYPE_INT_ARGB); bufferedImage.setRGB(0, 0, imageInfo.width, imageInfo.height, pixels, 0, imageInfo.width); ImageWriter writer = ImageIO.getImageWritersByFormatName("jpeg").next(); ImageWriteParam writeParam = writer.getDefaultWriteParam(); ColorModel colorModel = new DirectColorModel(24, 0x00ff0000, 0x0000ff00, 0x000000ff); ImageTypeSpecifier imageTypeSpecifier = new ImageTypeSpecifier(colorModel, colorModel.createCompatibleSampleModel(1, 1)); writeParam.setDestinationType(imageTypeSpecifier); writeParam.setSourceBands(new int[] {0, 1, 2}); writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); float q = 1.0f; if (quality != null) q = quality.floatValue(); writeParam.setCompressionQuality(q); DAByteArrayOutputStream buffer = new DAByteArrayOutputStream(); writer.setOutput(new MemoryCacheImageOutputStream(buffer)); IIOImage ioImage = new IIOImage(bufferedImage, null, null); writer.write(null, ioImage, writeParam); writer.dispose(); return buffer.getDirectByteArray(); }
ImageIO.getImageWritersByFormatName(formatName); ImageWriteParam writeParam = writer.getDefaultWriteParam(); if (writeParam.canWriteCompressed() && param != null) writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); writeParam.setCompressionType(param.getOutputFormatType()); ImageOutputStream ios = ImageIO.createImageOutputStream(os); writer.setOutput(ios); writer.write(null, new IIOImage(img, null, null), writeParam); writer.dispose(); ios.close();
if (image.hasRaster()) { imageOutput.setByteOrder(ByteOrder.LITTLE_ENDIAN); BufferedImage img = (BufferedImage) image.getRenderedImage(); int height = img.getHeight(); int width = img.getWidth(); writeDIBHeader(infoHeaderSize, img.getWidth(), img.getHeight(), isTopDown, img.getColorModel().getPixelSize(), compression); imageOutput.writeInt(0x000000FF); // B imageOutput.writeInt(0x0000FF00); // G imageOutput.writeInt(0x00FF0000); // R imageOutput.writeInt(0xFF000000); // A
/** * Convenience method that returns a scaled instance of the provided * {@code IIOImage}. * * @param iioSource the original image to be scaled * @param scale the desired scale * @return a scaled version of the original {@code IIOImage} */ public static IIOImage getScaledInstance(IIOImage iioSource, float scale) { if (!(iioSource.getRenderedImage() instanceof BufferedImage)) { throw new IllegalArgumentException("RenderedImage in IIOImage must be BufferedImage"); } if (Math.abs(scale - 1.0) < 0.001) { return iioSource; } BufferedImage source = (BufferedImage) iioSource.getRenderedImage(); BufferedImage target = getScaledInstance(source, (int) (scale * source.getWidth()), (int) (scale * source.getHeight())); return new IIOImage(target, null, null); }
@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(); } }
ImageWriter writer = null; try { writer = ImageIO.getImageWritersBySuffix("jpg").next(); ImageWriteParam param = writer.getDefaultWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(quality); ImageOutputStream os = ImageIO.createImageOutputStream(targetJpg); writer.setOutput(os); writer.write((IIOMetadata) null, new IIOImage(im, null, null), param); os.flush(); os.close();
IIOImage img = (IIOImage)jfxxThumbnails.get(jfxxIndex++); if(extensionCode.intValue() == THUMBNAIL_JPEG) { IIOMetadata thumbMetadata = img.getMetadata(); if(thumbMetadata != null) { Node thumbTree = (BufferedImage)img.getRenderedImage(); JFIFthumb.setAttribute("thumbWidth", Integer.toString(thumb.getWidth())); JFIFthumb.setAttribute("thumbHeight", Integer.toString(thumb.getHeight()));
/** * Save a Chart as a JPEG file * * @param chart * @param fileName * @param quality - a float between 0 and 1 (1 = maximum quality) * @throws IOException */ public static void saveJPGWithQuality(Chart chart, String fileName, float quality) throws IOException { BufferedImage bufferedImage = getBufferedImage(chart); Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("jpeg"); ImageWriter writer = iter.next(); // instantiate an ImageWriteParam object with default compression options ImageWriteParam iwp = writer.getDefaultWriteParam(); iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwp.setCompressionQuality(quality); File file = new File(fileName); FileImageOutputStream output = new FileImageOutputStream(file); try { writer.setOutput(output); IIOImage image = new IIOImage(bufferedImage, null, null); writer.write(null, image, iwp); writer.dispose(); } finally { output.close(); } }