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