List of usage examples for javax.imageio ImageIO getImageReaders
public static Iterator<ImageReader> getImageReaders(Object input)
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; }