Example usage for javax.imageio ImageIO getImageReaders

List of usage examples for javax.imageio ImageIO getImageReaders

Introduction

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

Prototype

public static Iterator<ImageReader> getImageReaders(Object input) 

Source Link

Document

Returns an Iterator containing all currently registered ImageReader s that claim to be able to decode the supplied Object , typically an ImageInputStream .

Usage

From source file:org.uiautomation.ios.server.servlet.ResourceServlet.java

private boolean validImage(File f) throws IOException {
    InputStream is = new FileInputStream(f);
    try {/*ww  w . j a va  2  s .  com*/
        //is = new FileInputStream(f);

        final ImageInputStream imageInputStream = ImageIO.createImageInputStream(is);
        final Iterator<ImageReader> imageReaders = ImageIO.getImageReaders(imageInputStream);
        if (!imageReaders.hasNext()) {
            // not an image
            return false;
        }
        final ImageReader imageReader = imageReaders.next();
        imageReader.setInput(imageInputStream);
        final BufferedImage image = imageReader.read(0);
        if (image == null) {
            // empty
            return false;
        }
        image.flush();
        return true;
    } catch (final IndexOutOfBoundsException e) {
        // truncated
        return false;
    } catch (final IIOException e) {
        if (e.getCause() instanceof EOFException) {
            // truncated
            return false;
        }
    } catch (Exception e) {
        return false;
    } finally {
        is.close();
    }
    return true;
}

From source file:openthinks.others.webpages.agent.HtmlImageResourceAgent.java

@Override
public void makeKeepToLocal(HtmlElement element) throws IOException {
    try {/*  w ww . j a  va  2s  .  c  o  m*/
        WebResponse wrp = keeper.loadWebResponse(keeper.getResourceURL());
        if ("image/svg+xml".equalsIgnoreCase(wrp.getContentType())) {//issue for svg image
            throw new Exception("SVG image.");
        }
        ImageInputStream iis = ImageIO.createImageInputStream(wrp.getContentAsStream());
        Iterator<ImageReader> iter = ImageIO.getImageReaders(iis);
        if (iter.hasNext()) {
            ImageReader imageReader = iter.next();
            imageReader.setInput(iis);
            ImageIO.write(imageReader.read(0), imageReader.getFormatName(), new File(keeper.getResourcePath()));
        }
    } catch (Exception e) {
        ProcessLogger.info(CommonUtilities.getCurrentInvokerMethod(), e.getMessage());
        WebResponse wrp = keeper.loadWebResponse(keeper.getResourceURL());
        storeBinaryResource(wrp.getContentAsStream());
    }

}

From source file:org.openmrs.obs.handler.ImageHandler.java

/**
 * Currently supports all views and puts the Image file data into the ComplexData object
 * /*from  w  w w .j a  v a 2  s  .c o  m*/
 * @see org.openmrs.obs.ComplexObsHandler#getObs(org.openmrs.Obs, java.lang.String)
 */
public Obs getObs(Obs obs, String view) {
    File file = getComplexDataFile(obs);

    // Raw image
    if (ComplexObsHandler.RAW_VIEW.equals(view)) {
        BufferedImage img = null;
        try {
            img = ImageIO.read(file);
        } catch (IOException e) {
            log.error("Trying to read file: " + file.getAbsolutePath(), e);
        }

        ComplexData complexData = new ComplexData(file.getName(), img);

        // Image MIME type
        try {
            FileImageInputStream imgStream = new FileImageInputStream(file);
            Iterator<ImageReader> imgReader = ImageIO.getImageReaders(imgStream);
            imgStream.close();
            if (imgReader.hasNext()) {
                complexData.setMimeType("image/" + imgReader.next().getFormatName().toLowerCase());
            } else {
                log.warn("MIME type of " + file.getAbsolutePath() + " is not known");
            }
        } catch (FileNotFoundException e) {
            log.error("Image " + file.getAbsolutePath() + " was not found", e);
        } catch (IOException e) {
            log.error("Trying to determine MIME type of " + file.getAbsolutePath(), e);
        }

        obs.setComplexData(complexData);
    } else {
        // No other view supported
        // NOTE: if adding support for another view, don't forget to update supportedViews list above
        return null;
    }

    return obs;
}

From source file:net.rptools.tokentool.util.ImageUtil.java

private static ImageView getImage(ImageView thumbView, final Path filePath, final boolean overlayWanted,
        final int THUMB_SIZE) throws IOException {
    Image thumb = null;/*from   ww w.  j  a v a 2s .co  m*/
    String fileURL = filePath.toUri().toURL().toString();

    if (ImageUtil.SUPPORTED_IMAGE_FILE_FILTER.accept(null, fileURL)) {
        if (THUMB_SIZE <= 0)
            thumb = processMagenta(new Image(fileURL), COLOR_THRESHOLD, overlayWanted);
        else
            thumb = processMagenta(new Image(fileURL, THUMB_SIZE, THUMB_SIZE, true, true), COLOR_THRESHOLD,
                    overlayWanted);
    } else if (ImageUtil.PSD_FILE_FILTER.accept(null, fileURL)) {
        ImageInputStream is = null;
        PSDImageReader reader = null;
        int imageIndex = 1;

        // Mask layer should always be layer 1 and overlay image on layer 2. Note, layer 0 will be a combined layer composite
        if (overlayWanted)
            imageIndex = 2;

        File file = filePath.toFile();

        try {
            is = ImageIO.createImageInputStream(file);
            if (is == null || is.length() == 0) {
                log.info("Image from file " + file.getAbsolutePath() + " is null");
            }

            Iterator<ImageReader> iterator = ImageIO.getImageReaders(is);
            if (iterator == null || !iterator.hasNext()) {
                throw new IOException("Image file format not supported by ImageIO: " + filePath);
            }

            reader = (PSDImageReader) iterator.next();
            reader.setInput(is);
            BufferedImage thumbBI;
            thumbBI = reader.read(imageIndex);

            if (thumbBI != null) {
                int layerIndex = 0;
                if (overlayWanted)
                    layerIndex = 1;

                IIOMetadata metadata = reader.getImageMetadata(0);
                IIOMetadataNode root = (IIOMetadataNode) metadata
                        .getAsTree(PSDMetadata.NATIVE_METADATA_FORMAT_NAME);
                NodeList layerInfos = root.getElementsByTagName("LayerInfo");

                // Layer index corresponds to imageIndex - 1 in the reader
                IIOMetadataNode layerInfo = (IIOMetadataNode) layerInfos.item(layerIndex);

                // Get the width & height of the Mask layer so we can create the overlay the same size
                int width = reader.getWidth(0);
                int height = reader.getHeight(0);

                // Get layer offsets, PhotoShop PSD layers can have different widths/heights and all images start at 0,0 with a layer offset applied
                int x = Math.max(Integer.parseInt(layerInfo.getAttribute("left")), 0);
                int y = Math.max(Integer.parseInt(layerInfo.getAttribute("top")), 0);

                // Lets pad the overlay with transparency to make it the same size as the PSD canvas size
                thumb = resizeCanvas(SwingFXUtils.toFXImage(thumbBI, null), width, height, x, y);

                // Finally set ImageView to thumbnail size
                if (THUMB_SIZE > 0) {
                    thumbView.setFitWidth(THUMB_SIZE);
                    thumbView.setPreserveRatio(true);
                }
            }
        } catch (Exception e) {
            log.error("Processing: " + file.getAbsolutePath(), e);
        } finally {
            // Dispose reader in finally block to avoid memory leaks
            reader.dispose();
            is.close();
        }
    }

    thumbView.setImage(thumb);

    return thumbView;
}

From source file:at.gv.egiz.pdfas.common.utils.ImageUtils.java

public static Dimension getImageDimensions(InputStream is) throws IOException {
    ImageInputStream in = ImageIO.createImageInputStream(is);
    try {/*from  w w w  .  ja va2 s. c o m*/
        final Iterator<ImageReader> readers = ImageIO.getImageReaders(in);
        if (readers.hasNext()) {
            ImageReader reader = readers.next();
            try {
                reader.setInput(in);
                return new Dimension(reader.getWidth(0), reader.getHeight(0));
            } finally {
                reader.dispose();
            }
        }
        throw new IOException("Failed to read Image file");
    } finally {
        if (in != null)
            in.close();
    }
}

From source file:uk.bl.wa.analyser.payload.ImageAnalyser.java

@Override
public void analyse(String source, ArchiveRecordHeader header, InputStream tikainput, SolrRecord solr) {
    // Set up metadata object to pass to parsers:
    Metadata metadata = new Metadata();
    // Skip large images:
    if (header.getLength() > max_size_bytes) {
        return;/* w  w w. ja  v a2s.c o  m*/
    }

    // Only attempt to analyse a random sub-set of the data:
    // (prefixing with static test of a final value to allow JIT to fully
    // optimise out the "OR Math.random()" bit)
    if (sampleRate >= 1.0 || Math.random() < sampleRate) {
        // Increment number of images sampled:
        sampleCount++;

        // images are enabled, we still want to extract image/height (fast)
        //This method takes 0.2ms for a large image. I can be done even faster if needed(but more complicated)).
        //see https://stackoverflow.com/questions/672916/how-to-get-image-height-and-width-using-java

        ImageInputStream input = null;
        ImageReader reader = null;
        try {
            input = ImageIO.createImageInputStream(tikainput);
            reader = ImageIO.getImageReaders(input).next();
            reader.setInput(input);
            // Get dimensions of first image in the stream, without decoding pixel values
            int width = reader.getWidth(0);
            int height = reader.getHeight(0);

            // Store basic image data:
            solr.addField(SolrFields.IMAGE_HEIGHT, "" + height);
            solr.addField(SolrFields.IMAGE_WIDTH, "" + width);
            solr.addField(SolrFields.IMAGE_SIZE, "" + (height * width));
        } catch (Exception e) {
            //it is known that (most) .ico and (all) .svg are not supported by java. Do not log, since it will spam.
            // log.warn("Unable to extract image height/width/size for url:"+header.getUrl(),e);

        } finally {
            if (reader != null) {
                reader.dispose();
            }
        }

    }
}

From source file:com.qwazr.extractor.parser.ImageParser.java

@Override
public void parseContent(final MultivaluedMap<String, String> parameters, final Path path,
        final String extension, final String mimeType, final ParserResultBuilder resultBuilder)
        throws Exception {

    final ImagePHash imgPhash = new ImagePHash();
    try (final ImageInputStream in = ImageIO.createImageInputStream(path.toFile())) {
        final Iterator<ImageReader> readers = ImageIO.getImageReaders(in);
        if (readers.hasNext()) {
            ParserFieldsBuilder result = resultBuilder.newDocument();
            ImageReader reader = readers.next();
            resultBuilder.metas().set(MIME_TYPE, "image/" + reader.getFormatName().toLowerCase());
            try {
                reader.setInput(in);//from  w  w w .java 2s.  co m
                result.add(WIDTH, reader.getWidth(0));
                result.add(HEIGHT, reader.getHeight(0));
                result.add(FORMAT, reader.getFormatName());
                result.add(PHASH, imgPhash.getHash(reader.read(0)));
                IIOMetadata metadata = reader.getImageMetadata(0);
                if (metadata != null) {
                    String[] names = metadata.getMetadataFormatNames();
                    if (names != null)
                        for (String name : names)
                            browseNodes("META", metadata.getAsTree(name), result);
                }
            } finally {
                reader.dispose();
            }
        }
    }
}

From source file:org.geoserver.wps.ppio.CoveragePPIOTest.java

private void testIsFormat(GridCoverage2D coverage, CoveragePPIO ppio, File encodedFile, String formatName)
        throws Exception {
    try (FileOutputStream fos = new FileOutputStream(encodedFile)) {
        ppio.encode(coverage, fos);/*from  ww w .  j  a  v  a 2s. co m*/
    }
    try (FileImageInputStream fis = new FileImageInputStream(encodedFile)) {
        ImageReader imageReader = null;
        try {
            imageReader = ImageIO.getImageReaders(fis).next();
            imageReader.setInput(fis);
            assertTrue(formatName.equalsIgnoreCase(imageReader.getFormatName()));
            assertNotNull(imageReader.read(0));
        } finally {
            if (imageReader != null) {
                try {
                    imageReader.dispose();
                } catch (Throwable t) {
                    // Ignore it.
                }
            }
        }
    }
}

From source file:org.artifactory.common.wicket.panel.upload.LogoFileUploadForm.java

/**
 * check if the image has fake format , its not a real image
 * this check done to eliminate security issue
 *
 * @return//  w  w w .  ja v  a2  s  . co m
 * @throws IOException
 */
private boolean isImageFake() throws Exception {
    boolean isFakeImage = false;
    ImageInputStream imageInputStream = null;
    try {
        Path path = Paths.get(uploadedFile.getCanonicalPath());
        byte[] data = Files.readAllBytes(path);
        imageInputStream = ImageIO.createImageInputStream(new ByteArrayInputStream(data));
        Iterator<ImageReader> iter = ImageIO.getImageReaders(imageInputStream);
        if (!iter.hasNext()) {
            isFakeImage = true;
        }
    } catch (Exception e) {
        throw new Exception(e);
    } finally {
        if (imageInputStream != null) {
            try {
                imageInputStream.close();
            } catch (IOException e) {
                throw new IOException(e);
            }
        }
    }
    return isFakeImage;
}

From source file:com.alibaba.simpleimage.codec.jpeg.JPEGDecodePerformanceTest.java

protected DecodeFacade getJDKDecoder() {
    DecodeFacade d = new DecodeFacade() {

        public BufferedImage decode(InputStream img) throws IOException {
            javax.imageio.stream.ImageInputStream stream = null;

            try {
                stream = ImageIO.createImageInputStream(img);
                Iterator<ImageReader> readers = ImageIO.getImageReaders(stream);
                ImageReader reader = null;
                while (readers.hasNext()) {
                    reader = readers.next();
                    if (reader.canReadRaster()) {
                        break;
                    }/*from w  w  w.  j  a  v  a 2  s  .c om*/
                }

                reader.setInput(stream);
                BufferedImage bi = reader.read(0);

                return bi;
            } finally {
                if (stream != null) {
                    stream.close();
                }
            }
        }

        public String getName() {
            return "JDK Decoder";
        }

    };

    return d;
}