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:openthinks.others.htmlunit.PageKeeper.java

private StringBuffer keepStyleReference(String styleCtx) {
    Matcher matcher = RESOURCE_STYLE_REFERENCE_PATTERN.matcher(styleCtx);
    File refDir = new File(keepDir, RESOURCE_STYLE_REFERENCE_DIR);
    if (!refDir.exists())
        refDir.mkdirs();/*from   ww  w . j  a v  a2 s  .  c o  m*/
    StringBuffer sb = new StringBuffer();
    while (matcher.find()) {
        String relativeURL = matcher.group(1);
        String styleRefUrl = getFullyQualifiedUrl(relativeURL);
        String styleRefName = getResourceName(styleRefUrl);
        String styleRefCtx = "";
        File keepFile = new File(refDir, styleRefName);
        WebResponse wrp = null;
        try {
            checkIfAlreadExist(keepFile);
            wrp = getResourceResponse(styleRefUrl);
            if (wrp.getContentType().startsWith("image") || wrp.getContentType().startsWith("IMAGE")) {
                ImageInputStream iis = ImageIO.createImageInputStream(wrp.getContentAsStream());
                Iterator<ImageReader> iter = ImageIO.getImageReaders(iis);
                ImageReader imageReader = iter.next();
                imageReader.setInput(iis);
                ImageIO.write(imageReader.read(0), imageReader.getFormatName(), keepFile);
            } else {
                styleRefCtx = wrp.getContentAsString("UTF-8");
                store(styleRefCtx, keepFile);
            }
            matcher.appendReplacement(sb, "url(" + RESOURCE_STYLE_REFERENCE_URL + "/" + styleRefName + ")");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            matcher.appendReplacement(sb, "url(" + RESOURCE_STYLE_REFERENCE_URL + "/" + styleRefName + ")");
        } catch (NoSuchElementException e) {
            if (wrp != null) {
                styleRefCtx = wrp.getContentAsString("UTF-8");
                store(styleRefCtx, keepFile);
                matcher.appendReplacement(sb, "url(" + RESOURCE_STYLE_REFERENCE_URL + "/" + styleRefName + ")");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    matcher.appendTail(sb);
    return sb;
}

From source file:uk.bl.wa.analyser.payload.FaceDetectionAnalyser.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;/*from  w  ww. j a  v a2 s .  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++;

        // Attempt to extract faces etc.:
        if (this.extractFaces || this.extractDominantColours) {
            log.info("Attempting to parse image file: " + header.getUrl());
            final long deepStart = System.nanoTime();
            ParseRunner parser = new ParseRunner(fdp, tikainput, metadata, solr);
            try {
                TimeLimiter.run(parser, 30000L, false);
            } catch (Exception e) {
                log.error("WritableSolrRecord.extract(): " + e.getMessage());
                solr.addParseException("when scanning for faces", e);
            }
            // Store basic image data:
            solr.addField(SolrFields.IMAGE_HEIGHT, metadata.get(FaceDetectionParser.IMAGE_HEIGHT));
            solr.addField(SolrFields.IMAGE_WIDTH, metadata.get(FaceDetectionParser.IMAGE_WIDTH));
            solr.addField(SolrFields.IMAGE_SIZE, metadata.get(FaceDetectionParser.IMAGE_SIZE));
            if (this.extractFaces) {
                // Store faces in SOLR:
                for (String face : metadata.getValues(FaceDetectionParser.FACE_FRAGMENT_ID)) {
                    log.debug("Found a face!");
                    solr.addField(SolrFields.IMAGE_FACES, face);
                }
                int faces = metadata.getValues(FaceDetectionParser.FACE_FRAGMENT_ID).length;
                if (faces > 0)
                    solr.setField(SolrFields.IMAGE_FACES_COUNT, "" + faces);
            }
            if (this.extractDominantColours) {
                // Store colour:
                solr.addField(SolrFields.IMAGE_DOMINANT_COLOUR, metadata.get(FaceDetectionParser.DOM_COL));
                // TODO Extract multiple characteristic colours as well
            }
            Instrument.timeRel("WARCPayloadAnalyzers.analyze#total", "ImageAnalyzer.analyze#facesanddominant",
                    deepStart);
        } else { //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 data for url:" + header.getUrl(), e);
            } finally {
                if (reader != null) {
                    reader.dispose();
                }
            }

        }
    }
}

From source file:sernet.verinice.service.commands.LoadAttachmentFile.java

private BufferedImage readImageFromByteArrayFallback() throws IOException {
    ImageInputStream in = ImageIO
            .createImageInputStream(new ByteArrayInputStream(getAttachmentFile().getFileData()));
    Iterator<ImageReader> iter = ImageIO.getImageReaders(in);
    BufferedImage image = null;/*from  w  w w. j a v a2s . c o  m*/

    while (iter.hasNext()) {
        ImageReader reader = null;
        try {
            reader = (ImageReader) iter.next();
            ImageReadParam param = reader.getDefaultReadParam();
            reader.setInput(in, true, true);
            Iterator<ImageTypeSpecifier> imageTypes = reader.getImageTypes(0);
            while (imageTypes.hasNext()) {
                ImageTypeSpecifier imageTypeSpecifier = imageTypes.next();
                int bufferedImageType = imageTypeSpecifier.getBufferedImageType();
                if (bufferedImageType == BufferedImage.TYPE_BYTE_GRAY) {
                    param.setDestinationType(imageTypeSpecifier);
                    break;
                }
            }
            image = reader.read(0, param);
            if (null != image) {
                break;
            }
        } catch (Exception e) {
            getLog().error("Error while reading image the advanced way. DbId: " + getAttachmentFile().getDbId(),
                    e);
        } finally {
            if (null != reader) {
                reader.dispose();
            }
        }

    }
    return image;
}

From source file:tilt.image.Picture.java

/**
 * Get the format of the picture//from w  w  w.jav  a2  s. c o m
 * @return a mime type
 * @throws ImageException 
 */
final String getFormatName() throws ImageException {
    try {
        ImageInputStream iis = ImageIO.createImageInputStream(orig);
        Iterator<ImageReader> iter = ImageIO.getImageReaders(iis);
        if (!iter.hasNext()) {
            throw new RuntimeException("No readers found for " + id);
        }
        ImageReader reader = iter.next();
        iis.close();
        return reader.getFormatName();
    } catch (Exception e) {
        throw new ImageException(e);
    }
}

From source file:org.gmdev.pdftrick.utils.CustomExtraImgReader.java

/**
 * Read a JPG image with CMYK ICC profile
 * @param imageByteArray/* www.j  ava2  s  .c  o  m*/
 * @return The BufferedImage obj
 * @throws IOException
 * @throws ImageReadException
 */
public static BufferedImage readCMYK_JPG(byte[] imageByteArray) throws IOException, ImageReadException {

    colorType = COLOR_TYPE_RGB;
    hasAdobeMarker = false;

    InputStream in = new ByteArrayInputStream(imageByteArray);
    ImageInputStream stream = ImageIO.createImageInputStream(in);
    Iterator<ImageReader> iter = ImageIO.getImageReaders(stream);

    ImageReader reader = iter.next();
    reader.setInput(stream);

    BufferedImage image = null;
    ICC_Profile profile = null;

    colorType = COLOR_TYPE_CMYK;
    checkAdobeMarker(imageByteArray);
    profile = Imaging.getICCProfile(imageByteArray);

    WritableRaster raster = (WritableRaster) reader.readRaster(0, null);

    if (colorType == COLOR_TYPE_YCCK) {
        convertYcckToCmyk(raster);
    }
    if (hasAdobeMarker) {
        //convertInvertedColors(raster);
    }
    image = convertCmykToRgb(raster, profile);

    in.close();
    reader.dispose();
    return image;
}

From source file:de.javagl.jgltf.model.io.GltfUtils.java

/**
 * Tries to find an <code>ImageReader</code> that is capable of reading
 * the given image data. The returned image reader will be initialized
 * by passing an ImageInputStream that is created from the given data
 * to its <code>setInput</code> method. The caller is responsible for 
 * disposing the returned image reader.//ww  w .  jav a  2 s.  c  o m
 *  
 * @param imageData The image data
 * @return The image reader
 * @throws IOException If no matching image reader can be found
 */
@SuppressWarnings("resource")
private static ImageReader findImageReader(ByteBuffer imageData) throws IOException {
    InputStream inputStream = Buffers.createByteBufferInputStream(imageData.slice());
    ImageInputStream imageInputStream = ImageIO.createImageInputStream(inputStream);
    Iterator<ImageReader> imageReaders = ImageIO.getImageReaders(imageInputStream);
    if (imageReaders.hasNext()) {
        ImageReader imageReader = imageReaders.next();
        imageReader.setInput(imageInputStream);
        return imageReader;
    }
    throw new IOException("Could not find ImageReader for image data");
}

From source file:org.geotools.gce.imagecollection.Utils.java

/**
 * Look for an {@link ImageReader} instance that is able to read the
 * provided {@link ImageInputStream}, which must be non null.
 * /*from   w w  w .  java 2  s .  c o  m*/
 * <p>
 * In case no reader is found, <code>null</code> is returned.
 * 
 * @param inStream
 *            an instance of {@link ImageInputStream} for which we need to
 *            find a suitable {@link ImageReader}.
 * @return a suitable instance of {@link ImageReader} or <code>null</code>
 *         if one cannot be found.
 */
static ImageReader getReader(final ImageInputStream inStream) {
    Utilities.ensureNonNull("inStream", inStream);
    // get a reader
    inStream.mark();
    final Iterator<ImageReader> readersIt = ImageIO.getImageReaders(inStream);
    if (!readersIt.hasNext()) {
        return null;
    }
    return readersIt.next();
}

From source file:com.shending.support.CompressPic.java

public static void cut(String srcFile, String dstFile, int widthRange, int heightRange) {
    int x = 0;/* w ww  .j  av  a  2 s .co  m*/
    int y = 0;
    try {
        ImageInputStream iis = ImageIO.createImageInputStream(new File(srcFile));
        Iterator<ImageReader> iterator = ImageIO.getImageReaders(iis);
        ImageReader reader = (ImageReader) iterator.next();
        reader.setInput(iis, true);
        ImageReadParam param = reader.getDefaultReadParam();
        int oldWidth = reader.getWidth(0);
        int oldHeight = reader.getHeight(0);
        int newWidth, newHeight;
        newWidth = oldHeight * widthRange / heightRange;
        if (newWidth < oldWidth) {
            newHeight = oldHeight;
            x = (oldWidth - newWidth) / 2;
        } else {
            newWidth = oldWidth;
            newHeight = oldWidth * heightRange / widthRange;
            y = (oldHeight - newHeight) / 2;
        }
        Rectangle rectangle = new Rectangle(x, y, newWidth, newHeight);
        param.setSourceRegion(rectangle);
        BufferedImage bi = reader.read(0, param);
        File file = new File(dstFile);
        ImageIO.write(bi, reader.getFormatName(), file);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

From source file:common.utils.ImageUtils.java

public static ImageReader getImageReader(ImageInputStream is) {
    //Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("jpeg");
    Iterator<ImageReader> iter = ImageIO.getImageReaders(is);
    if (iter.hasNext()) {
        return iter.next();
    } else {/*from  ww  w  .  j av a 2  s. c  om*/
        return null;
    }
    //throw new IllegalStateException("No readers found");
}

From source file:edu.ku.brc.specify.datamodel.busrules.AttachmentBusRules.java

protected void addImageAttributeIfNecessary() {
    if (browser != null) {
        Integer width = null;//from   ww  w  .j  a va2 s. co  m
        Integer height = null;
        File file = new File(browser.getValue().toString());
        String mimeType = file == null ? null : AttachmentUtils.getMimeType(file.getName());
        boolean isImage = mimeType != null && mimeType.startsWith("image");
        if (isImage) {
            try {
                ImageInputStream iis = ImageIO.createImageInputStream(file);
                Iterator<ImageReader> readers = ImageIO.getImageReaders(iis);

                if (readers.hasNext()) {
                    // pick the first available ImageReader
                    ImageReader reader = readers.next();
                    // attach source to the reader
                    reader.setInput(iis, true);

                    // read metadata of first image
                    //                      IIOMetadata metadata = reader.getImageMetadata(0);

                    width = reader.getWidth(0);
                    height = reader.getHeight(0);
                }
            } catch (IOException ex) {
                //XXX does this execption necessarily mean the file is bad?
                //XXX throw or log this exception
                ex.printStackTrace();
            }
        }
        //MultiView mvobj = formViewObj.getKids().get(0);
        FormViewObj aiafv = imageAttributeMultiView == null ? null
                : imageAttributeMultiView.getCurrentViewAsFormViewObj();
        if (aiafv != null) {
            //hide add/delete buttons. 
            aiafv.getNewRecBtn().setVisible(false);
            aiafv.getDelRecBtn().setVisible(false);
            if (isImage) {
                if (aiafv.getDataObj() == null) {
                    aiafv.getNewRecBtn().doClick();
                }
                System.out.println(browser.getValue() + "height " + height + " width " + width);
                try {
                    aiafv.setDataIntoUIComp("height", height);
                    aiafv.setControlChanged("height");
                    aiafv.setDataIntoUIComp("width", width);
                    aiafv.setControlChanged("width");
                } catch (Exception e) {
                    log.error("Unable set image attribute data. Controls may be missing from form definition");
                }
            } else {
                if (aiafv.getDataObj() != null) {
                    //delete the imageAttribute rec
                    //XXX suppress "confirm delete" dlg?
                    aiafv.getDelRecBtn().doClick();
                }
            }
        }
        setupImageAttributeView();
    }
}