List of usage examples for javax.imageio ImageIO createImageOutputStream
public static ImageOutputStream createImageOutputStream(Object output) throws IOException
From source file:com.aimluck.eip.fileupload.util.FileuploadUtils.java
/** * ???????//from w w w .jav a2 s . c o m * * @param org_id * @param folderName * @param uid * @param fileBean * @param acceptExts * @param msgList * @return */ public static byte[] getBytesShrink(InputStream is, int width, int height, List<String> msgList) { byte[] result = null; try { BufferedImage orgImage = ImageIO.read(is); BufferedImage shrinkImage = FileuploadUtils.shrinkImage(orgImage, width, height); Iterator<ImageWriter> writers = ImageIO.getImageWritersBySuffix("png"); ImageWriter writer = writers.next(); ByteArrayOutputStream out = new ByteArrayOutputStream(); ImageOutputStream ios = ImageIO.createImageOutputStream(out); writer.setOutput(ios); writer.write(shrinkImage); result = out.toByteArray(); } catch (Exception e) { logger.error("fileupload", e); result = null; } finally { try { if (is != null) { is.close(); } } catch (Exception e) { logger.error("fileupload", e); result = null; } } return result; }
From source file:de.unigoettingen.sub.commons.contentlib.imagelib.JpegInterpreter.java
@Override public byte[] writeToStreamAndByteArray(OutputStream outStream) { byte[] data = null; if (this.renderedimage == null) { // no image available return data; }/*from w w w.ja va2 s. c o m*/ try { // create a buffered Image, which has no Alpha channel // as JPEG does not support Alpha Channels and the // ImageIO doesn't care - but will create a corrupt JPEG BufferedImage noAlphaBi = ImageManipulator.fromRenderedToBufferedNoAlpha(renderedimage); ImageOutputStream imageOutStream = ImageIO.createImageOutputStream(outStream); // Iterator<ImageWriter> writerIter = ImageIO // .getImageWritersByFormatName("jpg"); // ImageWriter writer = writerIter.next(); // get writer from ImageIO ImageWriter writer = new JPEGImageWriter(new JPEGImageWriterSpi()); // create metadata by creating an XML tree ImageWriteParam writerParam = writer.getDefaultWriteParam(); ImageTypeSpecifier its = new ImageTypeSpecifier(noAlphaBi); // ImageTypeSpecifier its = new // ImageTypeSpecifier(image.getColorModel(), // image.getSampleModel()); // IIOMetadata iomd = writer.getDefaultImageMetadata(new // ImageTypeSpecifier(image), writerParam); // Element tree = // (Element)iomd.getAsTree("javax_imageio_jpeg_image_1.0"); // Element tree = (Element)iomd.getAsTree("javax_imageio_1.0"); // IIOMetadata iomd = writer.getDefaultImageMetadata(its, writerParam); // create the XML tree and modify the appropriate DOM elements // to set the metadata setMetadata(iomd); // set compression writerParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); float comprvalue = ((float) writerCompressionValue) / 100; writerParam.setCompressionQuality(comprvalue); // set output writer.setOutput(imageOutStream); writer.prepareWriteSequence(null); // create new image parameters to set the compression // Locale locale = new Locale("en"); // JPEGImageWriteParam jpegWriteParam = new // JPEGImageWriteParam(locale); // IIOImage iioImage = new IIOImage(renderedimage, null, iomd); IIOImage iioImage = new IIOImage(noAlphaBi, null, iomd); writer.write(null, iioImage, writerParam); writer.endWriteSequence(); imageOutStream.flush(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageOutputStream imageToFile = ImageIO.createImageOutputStream(baos); writer.setOutput(imageToFile); writer.prepareWriteSequence(null); writer.write(null, iioImage, writerParam); writer.endWriteSequence(); imageToFile.flush(); imageToFile.close(); baos.flush(); data = baos.toByteArray(); baos.close(); writer.dispose(); imageOutStream.close(); } catch (IOException e) { LOGGER.error("IOException occured", e); } return data; }
From source file:org.gallery.web.controller.ImageController.java
public static boolean compressImg(BufferedImage src, File outfile, double d) { FileOutputStream out = null;// w w w . j a v a 2s . c o m ImageWriter imgWrier; ImageWriteParam imgWriteParams; // ? jpg imgWrier = ImageIO.getImageWritersByFormatName("jpg").next(); imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(null); // ??MODE_EXPLICIT imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT); // ?qality?0~1 imgWriteParams.setCompressionQuality((float) d); imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED); ColorModel colorModel = ColorModel.getRGBdefault(); // ? imgWriteParams.setDestinationType( new javax.imageio.ImageTypeSpecifier(colorModel, colorModel.createCompatibleSampleModel(16, 16))); try { out = new FileOutputStream(outfile); imgWrier.reset(); // out?write, ImageOutputStream? // OutputStream imgWrier.setOutput(ImageIO.createImageOutputStream(out)); // write??? imgWrier.write(null, new IIOImage(src, null, null), imgWriteParams); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); return false; } return true; }
From source file:edu.ku.brc.specify.utilapps.ERDVisualizer.java
public void writeJPEG(File outfile, BufferedImage bufferedImage, float compressionQuality) { try {//from w ww. j av a2 s . c o m long start = System.currentTimeMillis(); // Find a jpeg writer ImageWriter writer = null; Iterator<?> iter = ImageIO.getImageWritersByFormatName("jpg"); if (iter.hasNext()) { writer = (ImageWriter) iter.next(); } // Prepare output file ImageOutputStream ios = ImageIO.createImageOutputStream(outfile); writer.setOutput(ios); // Set the compression quality ImageWriteParam iwparam = new MyImageWriteParam(); iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwparam.setCompressionQuality(compressionQuality); // Write the image writer.write(null, new IIOImage(bufferedImage, null, null), null); // Cleanup ios.flush(); writer.dispose(); ios.close(); System.out.println(System.currentTimeMillis() - start); } catch (IOException e) { edu.ku.brc.af.core.UsageTracker.incrHandledUsageCount(); edu.ku.brc.exceptions.ExceptionTracker.getInstance().capture(ERDVisualizer.class, e); e.printStackTrace(); } }
From source file:nl.softwaredesign.exporter.ODTExportFormat.java
/** * TODO Move to utility class?// ww w . ja v a 2 s . c o m * Extract the content data (bytes) from the given image. * @param icon image to get bytes for * @param format desired format for image * @param background Color to use as background if transparency in image * @param width Desired width of the image in the byte array * @param height Desired width of the image in the byte array * @return the bytes of the image * @throws IOException */ private byte[] imageToBytes(ImageIcon icon, String format, Color background, int width, int height) throws IOException { Iterator writers = ImageIO.getImageWritersByFormatName(format); ImageWriter writer = (ImageWriter) writers.next(); ByteArrayOutputStream output = new ByteArrayOutputStream(); ImageOutputStream ios = ImageIO.createImageOutputStream(output); writer.setOutput(ios); BufferedImage img; if ("png".equalsIgnoreCase(format) || "gif".equalsIgnoreCase(format)) { img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); } else { img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); } WaitingObserver observer = new WaitingObserver(); if (!img.getGraphics().drawImage(icon.getImage(), 0, 0, width, height, background, observer)) { try { observer.waitForDone(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); return new byte[0]; } } IIOMetadata metadata = writer.getDefaultImageMetadata(new ImageTypeSpecifier(img), writer.getDefaultWriteParam()); if (format.equalsIgnoreCase("jpg")) { Element tree = (Element) metadata.getAsTree("javax_imageio_jpeg_image_1.0"); Element jfif = (Element) tree.getElementsByTagName("app0JFIF").item(0); jfif.setAttribute("Xdensity", Integer.toString(72)); jfif.setAttribute("Ydensity", Integer.toString(72)); jfif.setAttribute("resUnits", "1"); metadata.setFromTree("javax_imageio_jpeg_image_1.0", tree); } else { double dotsPerMilli = 7.2 / 2.54; IIOMetadataNode horiz = new IIOMetadataNode("HorizontalPixelSize"); horiz.setAttribute("value", Double.toString(dotsPerMilli)); IIOMetadataNode vert = new IIOMetadataNode("VerticalPixelSize"); vert.setAttribute("value", Double.toString(dotsPerMilli)); IIOMetadataNode dim = new IIOMetadataNode("Dimension"); dim.appendChild(horiz); dim.appendChild(vert); IIOMetadataNode root = new IIOMetadataNode("javax_imageio_1.0"); root.appendChild(dim); metadata.mergeTree("javax_imageio_1.0", root); } writer.write(null, new IIOImage(img, null, metadata), null); return output.toByteArray(); }
From source file:lucee.runtime.img.Image.java
public void writeOut(Resource destination, String format, boolean overwrite, float quality) throws IOException, ExpressionException { if (destination == null) { if (source != null) destination = source;/*from w ww .ja v a 2s . c o m*/ else throw new IOException("missing destination file"); } if (destination.exists()) { if (!overwrite) throw new IOException("can't overwrite existing image"); } if (JAIUtil.isSupportedWriteFormat(format)) { JAIUtil.write(getBufferedImage(), destination, format); return; } OutputStream os = null; ImageOutputStream ios = null; try { os = destination.getOutputStream(); ios = ImageIO.createImageOutputStream(os); _writeOut(ios, format, quality); } finally { ImageUtil.closeEL(ios); IOUtil.closeEL(os); } }
From source file:lucee.runtime.img.Image.java
public void writeOut(OutputStream os, String format, float quality, boolean closeStream) throws IOException, ExpressionException { ImageOutputStream ios = ImageIO.createImageOutputStream(os); try {//from w w w. j a v a 2s . com _writeOut(ios, format, quality); } finally { IOUtil.closeEL(ios); } }
From source file:lucee.runtime.img.Image.java
public byte[] getImageBytes(String format, boolean noMeta) throws PageException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); if (JAIUtil.isSupportedWriteFormat(format)) { try {//from ww w . j a v a 2s. co m JAIUtil.write(getBufferedImage(), baos, format); } catch (IOException e) { throw Caster.toPageException(e); } } else { ImageOutputStream ios = null; try { ios = ImageIO.createImageOutputStream(baos); _writeOut(ios, format, 1, noMeta); } catch (IOException e) { throw Caster.toPageException(e); } finally { IOUtil.closeEL(ios); } } return baos.toByteArray(); }
From source file:edu.harvard.iq.dvn.core.web.servlet.FileDownloadServlet.java
private boolean generateImageThumb(StudyFile file) { String fileLocation = file.getFileSystemLocation(); if (fileLocation == null || fileLocation.trim().equals("")) { return false; }/*from www . j ava 2s . c om*/ String thumbFileLocation = fileLocation + ".thumb"; // see if the thumb is already generated and saved: if (new File(thumbFileLocation).exists()) { return true; } // let's attempt to generate the thumb: // the default size of the thumbnail is 64 pixels horizontally. // The number 64 was picked arbitrarily; if a different size is // desired, it can be configured via the dvn.image.thumbnail.size // JVM option. Long thumbSize = Long.valueOf(64); String thumbSizeOption = System.getProperty("dvn.image.thumbnail.size"); if (thumbSizeOption != null) { Long thumbSizeOptionValue = null; try { thumbSizeOptionValue = new Long(thumbSizeOption); } catch (NumberFormatException nfe) { // if the supplied option value is invalid/unparseable, we // ignore it and fall back to the default value. } if (thumbSizeOptionValue != null && thumbSizeOptionValue.longValue() > 0) { thumbSize = thumbSizeOptionValue; } } // it is also possible to configure the thumbnail size for a // specific dataverse: VDC vdc = file.getStudy().getOwner(); if (vdc != null) { thumbSizeOption = System.getProperty("dvn.image.thumbnail.size." + vdc.getAlias()); if (thumbSizeOption != null) { Long thumbSizeOptionValue = null; try { thumbSizeOptionValue = new Long(thumbSizeOption); } catch (NumberFormatException nfe) { // if the supplied option value is invalid/unparseable, we // ignore it and fall back to the default value. } if (thumbSizeOptionValue != null && thumbSizeOptionValue.longValue() > 0) { thumbSize = thumbSizeOptionValue; } } } // This is the default location of the "convert" executable from the // ImageMagick package. If it's installed in a different locaiton, // it can be configured via the dvn.image.convert.exec JVM option. String imageMagickConvertExec = "/usr/bin/convert"; String imageMagickConvertExecOption = System.getProperty("dvn.image.convrt.exec"); if (imageMagickConvertExecOption != null) { if (!imageMagickConvertExecOption.trim().equals("")) { imageMagickConvertExec = imageMagickConvertExecOption.trim(); } } if (new File(imageMagickConvertExec).exists()) { String sizeOption = " -size " + thumbSize + "x" + thumbSize + " "; String ImageMagickCommandLine = imageMagickConvertExec + sizeOption + fileLocation + " -resize " + thumbSize + " -flatten png:" + thumbFileLocation; int exitValue = 1; try { Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec(ImageMagickCommandLine); exitValue = process.waitFor(); } catch (Exception e) { exitValue = 1; } if (exitValue == 0) { return true; } } // For whatever reason, creating the thumbnail with ImageMagick // has failed. // Let's try again, this time with Java's standard Image // library: try { BufferedImage fullSizeImage = ImageIO.read(new File(fileLocation)); if (fullSizeImage == null) { return false; } double scaleFactor = (thumbSize.doubleValue()) / (double) fullSizeImage.getWidth(null); int thumbHeight = (int) (fullSizeImage.getHeight(null) * scaleFactor); // We are willing to spend a few extra CPU cycles to generate // better-looking thumbnails, hence the SCALE_SMOOTH flag. // SCALE_FAST would trade quality for speed. java.awt.Image thumbImage = fullSizeImage.getScaledInstance(thumbSize.intValue(), thumbHeight, java.awt.Image.SCALE_SMOOTH); ImageWriter writer = null; Iterator iter = ImageIO.getImageWritersByFormatName("png"); if (iter.hasNext()) { writer = (ImageWriter) iter.next(); } else { return false; } BufferedImage lowRes = new BufferedImage(thumbSize.intValue(), thumbHeight, BufferedImage.TYPE_INT_RGB); lowRes.getGraphics().drawImage(thumbImage, 0, 0, null); ImageOutputStream ios = ImageIO.createImageOutputStream(new File(thumbFileLocation)); writer.setOutput(ios); // finally, save thumbnail image: writer.write(lowRes); writer.dispose(); ios.close(); thumbImage.flush(); fullSizeImage.flush(); lowRes.flush(); return true; } catch (Exception e) { // something went wrong, returning "false": dbgLog.info("ImageIO: caught an exception while trying to generate a thumbnail for " + fileLocation); return false; } }