List of usage examples for javax.imageio.plugins.jpeg JPEGImageWriteParam setCompressionQuality
public void setCompressionQuality(float quality)
From source file:Main.java
public static void main(String[] args) throws Exception { URL url = new URL("http://www.java2s.com/style/download.png"); BufferedImage bi = ImageIO.read(url); for (float q = 0.2f; q < .9f; q += .2f) { OutputStream outStream = new FileOutputStream(new File("c:/Java_Dev/Image-" + q + ".jpg")); ImageWriter imgWriter = ImageIO.getImageWritersByFormatName("jpg").next(); ImageOutputStream ioStream = ImageIO.createImageOutputStream(outStream); imgWriter.setOutput(ioStream);/*from ww w .java 2 s . c o m*/ JPEGImageWriteParam jpegParams = new JPEGImageWriteParam(Locale.getDefault()); jpegParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); jpegParams.setCompressionQuality(q); imgWriter.write(null, new IIOImage(bi, null, null), jpegParams); ioStream.flush(); ioStream.close(); imgWriter.dispose(); } }
From source file:Main.java
private static void writeJpegCompressedImage(BufferedImage image, String outFile) throws IOException { float qualityFloat = 1f; ByteArrayOutputStream outStream = new ByteArrayOutputStream(); ImageWriter imgWriter = ImageIO.getImageWritersByFormatName("jpg").next(); ImageOutputStream ioStream = ImageIO.createImageOutputStream(outStream); imgWriter.setOutput(ioStream);/*www . jav a 2s . com*/ JPEGImageWriteParam jpegParams = new JPEGImageWriteParam(Locale.getDefault()); jpegParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); jpegParams.setCompressionQuality(qualityFloat); imgWriter.write(null, new IIOImage(image, null, null), jpegParams); ioStream.flush(); ioStream.close(); imgWriter.dispose(); OutputStream outputStream = new FileOutputStream(outFile); outStream.writeTo(outputStream); }
From source file:eu.europa.esig.dss.pades.signature.visible.ImageFactory.java
private static InputStream convertToInputStream(BufferedImage buffImage, int dpi) throws IOException { Iterator<ImageWriter> it = ImageIO.getImageWritersByFormatName("jpeg"); if (!it.hasNext()) { throw new DSSException("No writer for JPEG found"); }/*from ww w . j a v a 2 s . c o m*/ ImageWriter writer = it.next(); JPEGImageWriteParam jpegParams = (JPEGImageWriteParam) writer.getDefaultWriteParam(); jpegParams.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT); jpegParams.setCompressionQuality(1); ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier .createFromBufferedImageType(BufferedImage.TYPE_INT_RGB); IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, jpegParams); initDpi(metadata, dpi); ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageOutputStream imageOs = ImageIO.createImageOutputStream(os); writer.setOutput(imageOs); writer.write(metadata, new IIOImage(buffImage, null, metadata), jpegParams); InputStream is = new ByteArrayInputStream(os.toByteArray()); return is; }
From source file:com.oneis.utils.ImageColouring.java
/** * Transform the colours in an image./*w ww .j av a 2s .c o m*/ * * @param Filename Full pathname to the source file * @param Method Which colouring method to use, use METHOD_* constants * @param Colours Array of 0xRRGGBB colours for recolouring * @param JPEGQuality If the image is a JPEG, the output quality for * reencoding * @param Output An OutputStream to write the file. Will be closed. */ static public void colourImage(String Filename, int Method, int[] Colours, int JPEGQuality, OutputStream Output) throws IOException { ColouringInfo colouringInfo = prepareForColouring(Method, Colours); String extension = Filename.substring(Filename.lastIndexOf('.') + 1, Filename.length()); String outputFormat = extension; if (outputFormat.equals("gif")) { if (!colourImageGIF(Filename, colouringInfo, Output)) { throw new RuntimeException("Failed to directly colour GIF file"); } return; } BufferedImage image = ImageIO.read(new File(Filename)); int width = image.getWidth(); int height = image.getHeight(); // Rewrite the pixels int[] pixelBuffer = new int[width]; for (int y = 0; y < height; ++y) { image.getRGB(0, y, width, 1, pixelBuffer, 0, width); doColouring(pixelBuffer, colouringInfo); image.setRGB(0, y, width, 1, pixelBuffer, 0, width); } // Writing is done the hard way to enable the JPEG quality to be set. // Get a writer Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName(outputFormat); if (!iter.hasNext()) { throw new RuntimeException("Couldn't write image of type " + outputFormat); } ImageWriter writer = iter.next(); ImageWriteParam iwparam = null; // Is it JPEG? If so, might want to set the quality if (outputFormat.equals("jpeg") || outputFormat.equals("jpg")) { // Clamp value int q = JPEGQuality; if (q < 10) { q = 10; } if (q > 100) { q = 100; } JPEGImageWriteParam jparam = new JPEGImageWriteParam(null); jparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); jparam.setCompressionQuality((float) (((float) q) / 100.0)); iwparam = jparam; } ImageOutputStream output = ImageIO.createImageOutputStream(Output); writer.setOutput(output); writer.write(null, new IIOImage(image, null, null), iwparam); output.close(); }
From source file:org.sejda.sambox.pdmodel.graphics.image.JPEGFactory.java
private static void encodeImageToJPEGStream(BufferedImage image, float quality, int dpi, OutputStream out) throws IOException { // encode to JPEG ImageOutputStream ios = null; ImageWriter imageWriter = null; try {/* w ww. j ava 2s . com*/ // find JAI writer imageWriter = ImageIO.getImageWritersBySuffix("jpeg").next(); ios = ImageIO.createImageOutputStream(out); imageWriter.setOutput(ios); // add compression JPEGImageWriteParam jpegParam = (JPEGImageWriteParam) imageWriter.getDefaultWriteParam(); jpegParam.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT); jpegParam.setCompressionQuality(quality); // add metadata ImageTypeSpecifier imageTypeSpecifier = new ImageTypeSpecifier(image); IIOMetadata data = imageWriter.getDefaultImageMetadata(imageTypeSpecifier, jpegParam); Element tree = (Element) data.getAsTree("javax_imageio_jpeg_image_1.0"); Element jfif = (Element) tree.getElementsByTagName("app0JFIF").item(0); jfif.setAttribute("Xdensity", Integer.toString(dpi)); jfif.setAttribute("Ydensity", Integer.toString(dpi)); jfif.setAttribute("resUnits", "1"); // 1 = dots/inch // write imageWriter.write(data, new IIOImage(image, null, null), jpegParam); } finally { // clean up IOUtils.closeQuietly(out); if (ios != null) { ios.close(); } if (imageWriter != null) { imageWriter.dispose(); } } }
From source file:tvbrowserdataservice.file.ProgramField.java
/** * This Function loads an image using imageio, * resizes it to the Max-Size of Images in TVBrowser and * stores it as an compressed jpg.// w w w . ja va 2 s.c om * <p/> * If the Image is smaller than the Max-Size, it isn't altered * * @param data Image-Data * @return resized Image-Data */ private static byte[] recreateImage(byte[] data) { byte[] newdata = null; BufferedImage image = null; try { // Read Image image = ImageIO.read(new ByteArrayInputStream(data)); int curx = image.getWidth(null); int cury = image.getHeight(null); // If the Size is < than max, use the original Data to reduce compression // artefacts if ((curx <= MAX_IMAGE_SIZE_X) && (cury <= MAX_IMAGE_SIZE_Y)) { return data; } int newx = MAX_IMAGE_SIZE_X; int newy = (int) ((MAX_IMAGE_SIZE_X / (float) curx) * cury); if (newy > MAX_IMAGE_SIZE_Y) { newy = MAX_IMAGE_SIZE_Y; newx = (int) ((MAX_IMAGE_SIZE_Y / (float) cury) * curx); } BufferedImage tempPic = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB); Graphics2D g2d = tempPic.createGraphics(); g2d.drawImage(image, null, null); g2d.dispose(); BufferedImage newImage = UiUtilities.scaleIconToBufferedImage(tempPic, newx, newy); ByteArrayOutputStream out = new ByteArrayOutputStream(); // Find a jpeg writer ImageWriter writer = null; Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("jpg"); if (iter.hasNext()) { writer = iter.next(); } if (writer != null) { // Prepare output file ImageOutputStream ios = ImageIO.createImageOutputStream(out); writer.setOutput(ios); JPEGImageWriteParam param = new JPEGImageWriteParam(null); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(0.85f); // Write the image writer.write(null, new IIOImage(newImage, null, null), param); // Cleanup ios.flush(); writer.dispose(); ios.close(); newdata = out.toByteArray(); } else { mLog.severe("No JPEG-Exporter found. Image is not stored in Data"); } } catch (IOException e) { e.printStackTrace(); newdata = null; } return newdata; }