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); } }
ImageIO.getImageWritersByFormatName(formatName); ImageWriteParam writeParam = writer.getDefaultWriteParam(); if (writeParam.canWriteCompressed() && param != null) writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); writeParam.setCompressionType(param.getOutputFormatType()); writeParam.setCompressionType(supportedFormats.get(0)); writeParam.setCompressionQuality(param.getOutputQuality()); ImageOutputStream ios = ImageIO.createImageOutputStream(os); writer.setOutput(ios); writer.write(null, new IIOImage(img, null, null), writeParam); writer.dispose(); ios.close();
private ImageWriteParam copyParams(final ImageWriteParam param, final ImageWriter writer) { if (param == null) { return null; } // Always safe ImageWriteParam writeParam = writer.getDefaultWriteParam(); writeParam.setSourceSubsampling(param.getSourceXSubsampling(), param.getSourceYSubsampling(), param.getSubsamplingXOffset(), param.getSubsamplingYOffset()); writeParam.setSourceRegion(param.getSourceRegion()); writeParam.setSourceBands(param.getSourceBands()); // Only if canWriteCompressed() writeParam.setCompressionMode(param.getCompressionMode()); if (param.getCompressionMode() == ImageWriteParam.MODE_EXPLICIT) { writeParam.setCompressionQuality(param.getCompressionQuality()); } return writeParam; }
ImageWriter jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next(); ImageWriteParam jpgWriteParam = jpgWriter.getDefaultWriteParam(); jpgWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); jpgWriteParam.setCompressionQuality(0.7f); ImageOutputStream outputStream = createOutputStream(); // For example implementations see below jpgWriter.setOutput(outputStream); IIOImage outputImage = new IIOImage(image, null, null); jpgWriter.write(null, outputImage, jpgWriteParam); jpgWriter.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(); } }
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();
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]); System.err.println("compression: " + param.getLocalizedCompressionTypeName()); writer.write(null, new IIOImage(image, null, null), param); System.err.println("Write time: " + (System.currentTimeMillis() - start) + " ms"); stream.close();
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(); }
@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) { } } } } }
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(); }
try { ImageWriter writer = ImageIO.getImageWritersByFormatName("jpeg").next(); // just the first one if (null != writer) { ImageWriteParam iwp = writer.getDefaultWriteParam(); // with all jpeg specs in it iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwp.setCompressionQuality(quality); // <---------------------------------------------------------- THIS IS ALL I WANTED final ByteArrayOutputStream baos = new ByteArrayOutputStream( estimateJPEGFileSize(awt.getWidth(), awt.getHeight()) ); ImageOutputStream ios = ImageIO.createImageOutputStream(baos); RandomAccessFile ra = null; FileChannel ch = null; try { writer.setOutput(ios); writer.write(writer.getDefaultStreamMetadata(iwp), new IIOImage(awt, null, null), iwp); } finally { if (null != ch) ch.close(); ios.close(); ImageIO.write(awt, "jpeg", new File(path)); return true; } catch (FileNotFoundException fnfe) {
BufferedImage image = ImageIO.read(new ByteArrayInputStream(rawContents)); if (image == null) { throw new UnableToProcessTheImage(); Math.min((double) OUTPUT_PHOTO_WIDTH / image.getWidth(), (double) OUTPUT_PHOTO_HEIGHT / image.getHeight()); ImageIO.getImageWritersByMIMEType(ContentType.getContentType(contentType).getMimeType()).next(); ImageWriteParam param = writer.getDefaultWriteParam(); if (contentType.equals(ContentType.JPG)) { param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(1); writer.setOutput(ImageIO.createImageOutputStream(outputStream)); writer.write(null, new IIOImage(image, null, null), param); compressedContents = outputStream.toByteArray();
g.drawImage(img, 0, 0, null); g.dispose(); Iterator iter = ImageIO.getImageWritersByFormatName("jpeg"); ImageWriter writer = (ImageWriter)iter.next(); File f = new File(path); f = new File(path); ImageOutputStream ios = ImageIO.createImageOutputStream(f); writer.setOutput(ios); ImageWriteParam param = writer.getDefaultWriteParam(); param.setCompressionMode(param.MODE_EXPLICIT); param.setCompressionQuality(quality/100f); if (quality == 100) param.setSourceSubsampling(1, 1, 0, 0); IIOImage iioImage = new IIOImage(bi, null, null); writer.write(null, iioImage, param); ios.close(); writer.dispose(); if (replacing) {
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))
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();
Iterator<ImageWriter> iter = ImageIO.getImageWritersByMIMEType(multimedia.getMimeType().toString()); if (iter.hasNext()) { writer = iter.next(); ImageOutputStream ios = ImageIO.createImageOutputStream(bout)) { writer.setOutput(ios); iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); float q = ((float) jpgOutputQuality) / ((float) 100); iwparam.setCompressionQuality(q); writer.write(null, new IIOImage(image, null, null), iwparam); ios.flush(); writer.dispose(); multimedia.setData(bout.toByteArray()); multimedia.setWidth(image.getWidth()); multimedia.setHeight(image.getHeight()); multimedia.setFilename(filename); return multimedia;
/** * 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(); } }
void saveImage(OutputStream stream, String type, float quality) throws IOException { if (type.equalsIgnoreCase("png")) { ImageIO.write(img, "png", stream); } else if (type.equalsIgnoreCase("gif")) { GifEncoder gifEncoder = new GifEncoder(img); gifEncoder.encode(stream); } else if (type.equalsIgnoreCase("jpg") || type.equalsIgnoreCase("jpeg")) { Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("jpg"); ImageWriter writer = iter.next(); ImageWriteParam iwp = writer.getDefaultWriteParam(); iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwp.setCompressionQuality(quality); writer.setOutput(stream); writer.write(img); writer.dispose(); } else { throw new IOException("Unsupported image format: " + type); } stream.flush(); }
writer.addIIOWriteProgressListener(new IIOWriteProgressAdapter() { public void imageProgress(ImageWriter source, float percentageDone) { processImageProgress(percentageDone); writer.addIIOWriteWarningListener(new IIOWriteWarningListener() { public void warningOccurred(ImageWriter source, int imageIndex, String warning) { processWarningOccurred(imageIndex, warning); ImageIO.createImageOutputStream(embedded_stream); writer.setOutput(emb_ios); ImageWriteParam param = writer.getDefaultWriteParam(); param.setDestinationOffset(bmpParam.getDestinationOffset()); param.setSourceBands(bmpParam.getSourceBands()); param.setSourceRegion(bmpParam.getSourceRegion()); param.setSourceSubsampling(bmpParam.getSourceXSubsampling(), bmpParam.getSourceYSubsampling(), bmpParam.getSubsamplingXOffset(), bmpParam.getSubsamplingYOffset()); writer.write(null, image, param); emb_ios.flush(); } else throw new RuntimeException(I18N.getString("BMPImageWrite5") + " " + format);