List of usage examples for javax.imageio ImageIO createImageInputStream
public static ImageInputStream createImageInputStream(Object input) throws IOException
From source file:org.gmdev.pdftrick.utils.CustomExtraImgReader.java
/** * Tead a JBIG2 image and give a BufferedImage * @param image// w ww . j a v a 2 s .co m * @return The BufferedImage obj */ public static BufferedImage readJBIG2(PdfImageObject image) { BufferedImage buffImg = null; PdfDictionary dic = image.getDictionary(); PdfDictionary decodedic = dic.getAsDict(PdfName.DECODEPARMS); PdfStream globalStream = decodedic.getAsStream(PdfName.JBIG2GLOBALS); try { byte[] byteArrayGlobal = PdfReader.getStreamBytes((PRStream) globalStream); InputStream in = new ByteArrayInputStream(image.getImageAsBytes()); ImageInputStream stream = ImageIO.createImageInputStream(in); InputStream inG = new ByteArrayInputStream(byteArrayGlobal); ImageInputStream streamG = ImageIO.createImageInputStream(inG); JBIG2ImageReader reader = new JBIG2ImageReader(new JBIG2ImageReaderSpi()); reader.setInput(stream); JBIG2Globals globals = reader.processGlobals(streamG); reader.setGlobals(globals); ImageReadParam param = reader.getDefaultReadParam(); buffImg = reader.read(0, param); in.close(); inG.close(); } catch (Exception e) { logger.error("Exception", e); PdfTrickMessages.append("ERROR", Consts.SENDLOG_MSG); } return buffImg; }
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 w ww. ja va2 s .c o 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:org.sejda.sambox.pdmodel.graphics.image.JPEGFactory.java
private static BufferedImage readJpeg(Object fileOrStream) throws IOException { Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("JPEG"); ImageReader reader = null;/*from w w w. j a va 2s. c o m*/ while (readers.hasNext()) { reader = readers.next(); if (reader.canReadRaster()) { break; } } requireIOCondition(nonNull(reader), "Cannot find an ImageIO reader for JPEG image"); try (ImageInputStream iis = ImageIO.createImageInputStream(fileOrStream)) { reader.setInput(iis); ImageIO.setUseCache(false); return reader.read(0); } finally { reader.dispose(); } }
From source file:nl.b3p.kaartenbalie.service.KBImageTool.java
/** Reads an image from an http input stream. * * @param is Inputstream// www . j a v a2 s . c om * @param mime String representing the mime type of the image. * * @return BufferedImage * * @throws Exception */ // <editor-fold defaultstate="" desc="readImage(GetMethod method, String mime) method."> public static BufferedImage readImage(InputStream is, String mime, ServiceProviderRequest wmsRequest) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); int bytesRead = 0; byte[] buffer = new byte[2048]; while (bytesRead != -1) { bytesRead = is.read(buffer, 0, buffer.length); if (bytesRead > 0) baos.write(buffer, 0, bytesRead); } if (mime.indexOf(";") != -1) { mime = mime.substring(0, mime.indexOf(";")); } String mimeType = getMimeType(mime); if (mimeType == null) { String message = baos.toString(); message = message.replaceAll("(\\r|\\n)", ""); log.error("Response from server not understood (mime = " + mime + "): " + message); throw new Exception("Response from server not understood (mime = " + mime + "): " + message); } ImageReader ir = getReader(mimeType); if (ir == null) { log.error("no reader available for imageformat: " + mimeType.substring(mimeType.lastIndexOf("/") + 1)); throw new Exception( "no reader available for imageformat: " + mimeType.substring(mimeType.lastIndexOf("/") + 1)); } //TODO Make smarter.. Possibly faster... But keep reporting! wmsRequest.setBytesReceived(new Long(baos.size())); ImageInputStream stream = ImageIO.createImageInputStream(new ByteArrayInputStream(baos.toByteArray())); ir.setInput(stream, true); try { //if image is a png, has no alpha and has a tRNS then make that color transparent. BufferedImage i = ir.read(0); if (!i.getColorModel().hasAlpha() && ir.getImageMetadata(0) instanceof PNGMetadata) { PNGMetadata metadata = (PNGMetadata) ir.getImageMetadata(0); if (metadata.tRNS_present) { int alphaPix = (metadata.tRNS_red << 16) | (metadata.tRNS_green << 8) | (metadata.tRNS_blue); BufferedImage tmp = new BufferedImage(i.getWidth(), i.getHeight(), BufferedImage.TYPE_INT_ARGB); for (int x = 0; x < i.getWidth(); x++) { for (int y = 0; y < i.getHeight(); y++) { int rgb = i.getRGB(x, y); rgb = (rgb & 0xFFFFFF) == alphaPix ? alphaPix : rgb; tmp.setRGB(x, y, rgb); } } i = tmp; } } return i; } finally { ir.dispose(); } }
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 {/*w w w . j a v a 2s .co 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:org.esa.nest.dataio.radarsat2.Radarsat2ProductDirectory.java
protected void addImageFile(final String imgPath) throws IOException { final String name = imgPath.substring(imgPath.lastIndexOf("/") + 1, imgPath.length()).toLowerCase(); if ((name.endsWith("tif") || name.endsWith("tiff"))) { boolean valid = false; int dataType = ProductData.TYPE_INT32; if (name.startsWith("image")) { valid = true;/* www . j a va 2 s .c o m*/ } else if (name.startsWith("rh") || name.startsWith("rv")) { valid = true; dataType = ProductData.TYPE_FLOAT32; } if (valid) { final InputStream inStream = getInputStream(imgPath); final ImageInputStream imgStream = ImageIO.createImageInputStream(inStream); if (imgStream == null) throw new IOException("Unable to open " + imgPath); final ImageIOFile img; if (isSLC()) { img = new ImageIOFile(name, imgStream, ImageIOFile.getTiffIIOReader(imgStream), 1, 2, dataType); } else { img = new ImageIOFile(name, imgStream, ImageIOFile.getTiffIIOReader(imgStream)); } bandImageFileMap.put(img.getName(), img); } } }
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;/*from www . j a v a 2 s . c om*/ } // 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);/* w w w .ja va2 s. com*/ 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:nl.b3p.imagetool.ImageTool.java
/** * Reads an image from an http input stream. * * @param method Apache HttpClient GetMethod object * @param mime String representing the mime type of the image. * * @return BufferedImage//from w w w .jav a 2 s . c om * * @throws Exception */ // <editor-fold defaultstate="" desc="readImage(GetMethod method, String mime) method."> public static BufferedImage readImage(InputStream is, String mime) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); int bytesRead = 0; byte[] buffer = new byte[2048]; while (bytesRead != -1) { bytesRead = is.read(buffer, 0, buffer.length); if (bytesRead > 0) { baos.write(buffer, 0, bytesRead); } } ImageReader ir = null; BufferedImage i = null; try { if (mime.indexOf(";") != -1) { mime = mime.substring(0, mime.indexOf(";")); } String mimeType = getMimeType(mime); /* TODO: Kijken waarom er geen mime type meer binnenkomt. Wellicht door de * HttpClient vernieuwing in kaartenbalie ? */ if (mimeType == null) { mimeType = "image/png"; } if (mimeType == null) { log.error("Response from server not understood (mime = " + mime + "): " + baos.toString()); throw new Exception( "Response from server not understood (mime = " + mime + "): " + baos.toString()); } ir = getReader(mimeType); if (ir == null) { log.error("no reader available for imageformat: " + mimeType.substring(mimeType.lastIndexOf("/") + 1)); throw new Exception("no reader available for imageformat: " + mimeType.substring(mimeType.lastIndexOf("/") + 1)); } //TODO Make smarter.. Possibly faster... But keep reporting! ImageInputStream stream = ImageIO.createImageInputStream(new ByteArrayInputStream(baos.toByteArray())); ir.setInput(stream, true); i = ir.read(0); //if image is a png, has no alpha and has a tRNS then make that color transparent. if (!i.getColorModel().hasAlpha() && ir.getImageMetadata(0) instanceof PNGMetadata) { PNGMetadata metadata = (PNGMetadata) ir.getImageMetadata(0); if (metadata.tRNS_present) { int alphaPix = (metadata.tRNS_red << 16) | (metadata.tRNS_green << 8) | (metadata.tRNS_blue); BufferedImage tmp = new BufferedImage(i.getWidth(), i.getHeight(), BufferedImage.TYPE_INT_ARGB); for (int x = 0; x < i.getWidth(); x++) { for (int y = 0; y < i.getHeight(); y++) { int rgb = i.getRGB(x, y); rgb = (rgb & 0xFFFFFF) == alphaPix ? alphaPix : rgb; tmp.setRGB(x, y, rgb); } } i = tmp; } } } finally { if (ir != null) { ir.dispose(); } } return i; }
From source file:FileUtils.java
/** * Utility method to read image from disk and transform image to BufferedImage object * @param data - relative path to the image * @param format - file prefix of the image * @return BufferedImage representation of the image * *//*ww w.jav a 2 s.com*/ public static BufferedImage bitmapToImage(String data, String format) throws IOException { final InputStream inb = new FileInputStream(data); final ImageReader rdr = ImageIO.getImageReadersByFormatName(format).next(); final ImageInputStream imageInput = ImageIO.createImageInputStream(inb); rdr.setInput(imageInput); final BufferedImage image = rdr.read(0); inb.close(); return image; }