Example usage for javax.imageio ImageIO getImageWritersBySuffix

List of usage examples for javax.imageio ImageIO getImageWritersBySuffix

Introduction

In this page you can find the example usage for javax.imageio ImageIO getImageWritersBySuffix.

Prototype

public static Iterator<ImageWriter> getImageWritersBySuffix(String fileSuffix) 

Source Link

Document

Returns an Iterator containing all currently registered ImageWriter s that claim to be able to encode files with the given suffix.

Usage

From source file:Main.java

static public void main(String args[]) throws Exception {
    FileInputStream fin = new FileInputStream("a.gif");
    Iterator readers = ImageIO.getImageReadersBySuffix("GIF");
    ImageReader imageReader = (ImageReader) readers.next();
    ImageInputStream iis = ImageIO.createImageInputStream(fin);
    imageReader.setInput(iis, false);/*from  ww w  .  ja  v a  2s  .co m*/

    imageReader.addIIOReadProgressListener(new IIOReadProgressListener() {
        public void imageComplete(ImageReader source) {
            System.out.println("image complete " + source);
        }

        public void imageProgress(ImageReader source, float percentageDone) {
            System.out.println("image progress " + source + ": " + percentageDone + "%");
        }

        public void imageStarted(ImageReader source, int imageIndex) {
            System.out.println("image #" + imageIndex + " started " + source);
        }

        public void readAborted(ImageReader source) {
            System.out.println("read aborted " + source);
        }

        public void sequenceComplete(ImageReader source) {
            System.out.println("sequence complete " + source);
        }

        public void sequenceStarted(ImageReader source, int minIndex) {
            System.out.println("sequence started " + source + ": " + minIndex);
        }

        public void thumbnailComplete(ImageReader source) {
            System.out.println("thumbnail complete " + source);
        }

        public void thumbnailProgress(ImageReader source, float percentageDone) {
            System.out.println("thumbnail started " + source + ": " + percentageDone + "%");
        }

        public void thumbnailStarted(ImageReader source, int imageIndex, int thumbnailIndex) {
            System.out.println("thumbnail progress " + source + ", " + thumbnailIndex + " of " + imageIndex);
        }
    });

    BufferedImage image = imageReader.read(0);

    Iterator imageWriters = ImageIO.getImageWritersBySuffix("JPG");
    ImageWriter imageWriter = (ImageWriter) imageWriters.next();
    File file = new File("b.JPG");
    ImageOutputStream ios = ImageIO.createImageOutputStream(file);
    imageWriter.setOutput(ios);
    imageWriter.write(image);
}

From source file:Main.java

public static boolean canWriteExtension(String fileExt) {
    Iterator iter = ImageIO.getImageWritersBySuffix(fileExt);
    return iter.hasNext();
}

From source file:ch.entwine.weblounge.preview.jai.JAIPreviewGenerator.java

/**
 * {@inheritDoc}/*from   w  ww  .ja  va 2s . c  om*/
 * 
 * @see ch.entwine.weblounge.common.content.PreviewGenerator#supports(java.lang.String)
 */
public boolean supports(String format) {
    if (format == null)
        throw new IllegalArgumentException("Format cannot be null");
    return ImageIO.getImageWritersBySuffix(format.toLowerCase()).hasNext();
}

From source file:com.actelion.research.orbit.imageAnalysis.utils.ImageUtils.java

/**
 * Stores BufferedImage as JPEG2000 encoded file.
 *
 * @param bi/*  w  w w .  j  a v  a2 s  . c o m*/
 * @param filename
 * @param dEncRate
 * @param lossless
 * @throws IOException
 */
public static void storeBIAsJP2File(BufferedImage bi, String filename, double dEncRate, boolean lossless)
        throws IOException {

    if (hasJPEG2000FileTag(filename)) {

        IIOImage iioImage = new IIOImage(bi, null, null);

        ImageWriter jp2iw = ImageIO.getImageWritersBySuffix("jp2").next();
        J2KImageWriteParam writeParam = (J2KImageWriteParam) jp2iw.getDefaultWriteParam();

        // Indicates using the lossless scheme or not. It is equivalent to use reversible quantization and 5x3 integer wavelet filters. The default is true.
        writeParam.setLossless(lossless);

        if (lossless)
            writeParam.setFilter(J2KImageWriteParam.FILTER_53); // Specifies which wavelet filters to use for the specified tile-components. JPEG 2000 part I only supports w5x3 and w9x7 filters.
        else
            writeParam.setFilter(J2KImageWriteParam.FILTER_97);

        if (!lossless) {
            // The bitrate in bits-per-pixel for encoding. Should be set when lossy compression scheme is used. With the default value Double.MAX_VALUE, a lossless compression will be done.
            writeParam.setEncodingRate(dEncRate);

            // changes in compression rate are done in the following way
            // however JPEG2000 implementation seems not to support this <-- no differences visible
            //                writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            //                writeParam.setCompressionType(writeParam.getCompressionTypes()[0]);
            //                writeParam.setCompressionQuality(1.0f);
        }

        ImageOutputStream ios = null;
        try {
            ios = new FileImageOutputStream(new File(filename));
            jp2iw.setOutput(ios);
            jp2iw.write(null, iioImage, writeParam);
            jp2iw.dispose();
            ios.flush();
        } finally {
            if (ios != null)
                ios.close();
        }
    } else
        System.err.println("please name your file as valid JPEG2000 file: ends with .jp2");
}

From source file:it.geosolutions.imageio.plugins.nitronitf.ImageIOUtils.java

/**
 * Returns an ImageWriter given the input file
 * //from w  w  w .j av a  2  s.  co  m
 * @param file
 * @return
 * @throws IOException
 */
public static ImageWriter getImageWriter(File file) throws IOException {
    String ext = FilenameUtils.getExtension(file.getName().toLowerCase());
    ImageWriter writer = null;

    Iterator<ImageWriter> imageWriters = ImageIO.getImageWritersBySuffix(ext);
    if (imageWriters.hasNext()) {
        writer = imageWriters.next();
        ImageOutputStream stream = ImageIO.createImageOutputStream(file);
        writer.setOutput(stream);
    }
    return writer;
}

From source file:com.db.comserv.main.utilities.HttpCaller.java

public static String compress(String imageString, float quality) throws IOException {
    byte[] imageByte = Base64.decodeBase64(imageString);
    ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
    BufferedImage image = ImageIO.read(bis);
    bis.close();//from   w  ww  . j  ava2s . c  o m

    // Get a ImageWriter for given extension format.

    Iterator<ImageWriter> writers = ImageIO.getImageWritersBySuffix("jpg");
    if (!writers.hasNext())
        throw new IllegalStateException("No writers found");

    ImageWriter writer = (ImageWriter) writers.next();
    // Create the ImageWriteParam to compress the image.
    ImageWriteParam param = writer.getDefaultWriteParam();
    param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
    param.setCompressionQuality(quality);

    // The output will be a ByteArrayOutputStream (in memory)
    ByteArrayOutputStream bos = new ByteArrayOutputStream(32768);
    ImageOutputStream ios = ImageIO.createImageOutputStream(bos);
    writer.setOutput(ios);
    writer.write(null, new IIOImage(image, null, null), param);
    ios.flush(); // otherwise the buffer size will be zero!
    byte[] encodedBytes = Base64.encodeBase64(bos.toByteArray());

    return new String(encodedBytes);
}

From source file:com.aimluck.eip.fileupload.util.FileuploadUtils.java

/**
 * ???????// ww  w. j a  v a  2 s.  c  om
 * 
 * @param org_id
 * @param folderName
 * @param uid
 * @param fileBean
 * @param acceptExts
 * @param msgList
 * @return
 */
public static ShrinkImageSet getBytesShrinkFilebean(String org_id, String folderName, int uid,
        FileuploadLiteBean fileBean, String[] acceptExts, int width, int height, List<String> msgList,
        boolean isFixOrgImage) {

    byte[] result = null;
    byte[] fixResult = null;
    InputStream is = null;
    boolean fixed = false;

    try {

        String file_name = fileBean.getFileName();
        String ext = "";

        if (acceptExts != null && acceptExts.length > 0) {
            // ???
            // ????
            boolean isAccept = false;
            String tmpExt = null;
            int len = acceptExts.length;
            for (int i = 0; i < len; i++) {
                if (!acceptExts[i].startsWith(".")) {
                    tmpExt = "." + acceptExts[i];
                }
                if (file_name.toLowerCase().endsWith(tmpExt)) {
                    isAccept = true;
                    ext = tmpExt.replace(".", "");
                    ;
                    break;
                }
            }
            if (!isAccept) {
                // ???????null ?
                return null;
            }
        }

        is = ALStorageService.getFile(FOLDER_TMP_FOR_ATTACHMENT_FILES,
                uid + ALStorageService.separator() + folderName, String.valueOf(fileBean.getFileId()));

        byte[] imageInBytes = IOUtils.toByteArray(is);
        ImageInformation readImageInformation = readImageInformation(new ByteArrayInputStream(imageInBytes));
        BufferedImage bufferdImage = ImageIO.read(new ByteArrayInputStream(imageInBytes));
        if (readImageInformation != null) {
            bufferdImage = transformImage(bufferdImage, getExifTransformation(readImageInformation),
                    readImageInformation.orientation >= 5 ? bufferdImage.getHeight() : bufferdImage.getWidth(),
                    readImageInformation.orientation >= 5 ? bufferdImage.getWidth() : bufferdImage.getHeight());
            fixed = isFixOrgImage;
        }
        if (bufferdImage == null) {
            // ?bufferdImage???????????,null?.
            return null;
        }

        BufferedImage shrinkImage = FileuploadUtils.shrinkAndTrimImage(bufferdImage, width, height);
        Iterator<ImageWriter> writers = ImageIO.getImageWritersBySuffix("jpeg");
        ImageWriter writer = writers.next();

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ImageOutputStream ios = ImageIO.createImageOutputStream(out);
        writer.setOutput(ios);
        writer.write(shrinkImage);

        result = out.toByteArray();

        if (fixed) {
            Iterator<ImageWriter> writers2 = ImageIO.getImageWritersBySuffix(ext);
            ImageWriter writer2 = writers2.next();

            ByteArrayOutputStream out2 = new ByteArrayOutputStream();
            ImageOutputStream ios2 = ImageIO.createImageOutputStream(out2);
            writer2.setOutput(ios2);
            writer2.write(bufferdImage);

            fixResult = out2.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 new ShrinkImageSet(result, fixed ? fixResult : null);
}

From source file:com.aimluck.eip.fileupload.util.FileuploadUtils.java

/**
 * ???????//from  w  ww  .j a v  a 2 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:net.rptools.tokentool.AppActions.java

public static ImageWriter getImageWriterBySuffix(String suffix) throws IOException {
    Iterator writers = ImageIO.getImageWritersBySuffix(suffix);
    if (!writers.hasNext())
        throw new IOException("woops, no writers for " + suffix);
    return (ImageWriter) writers.next();
}

From source file:org.asqatasun.crawler.util.CrawlUtils.java

/**
 * Get an image extension from the image url
 * @param imageUrl//  www .  j a v  a2 s .c  o m
 * @return
 */
public static String getImageExtension(String imageUrl) {
    String ext = imageUrl.substring(imageUrl.lastIndexOf('.') + 1);
    try {
        java.util.Iterator<ImageWriter> it = ImageIO.getImageWritersBySuffix(ext);
        if (it.next() != null) {
            return ext;
        }
    } catch (NoSuchElementException ex) {
        return DEFAULT_IMG_EXTENSION;
    }
    return DEFAULT_IMG_EXTENSION;
}