List of usage examples for javax.imageio ImageIO getImageReadersByFormatName
public static Iterator<ImageReader> getImageReadersByFormatName(String formatName)
From source file:org.psystems.dicomweb.Dcm2Jpg.java
public void convert(File src, File dest) throws IOException { Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("DICOM"); ImageReader reader = iter.next(); DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam(); param.setWindowCenter(center);/* ww w. j a v a 2s .co m*/ param.setWindowWidth(width); param.setVoiLutFunction(vlutFct); param.setPresentationState(prState); param.setPValue2Gray(pval2gray); param.setAutoWindowing(autoWindowing); ImageInputStream iis = ImageIO.createImageInputStream(src); BufferedImage bi; OutputStream out = null; try { reader.setInput(iis, false); bi = reader.read(frame - 1, param); if (bi == null) { System.out.println("\nError: " + src + " - couldn't read!"); return; } out = new BufferedOutputStream(new FileOutputStream(dest)); JPEGImageEncoder enc = JPEGCodec.createJPEGEncoder(out); enc.encode(bi); } finally { CloseUtils.safeClose(iis); CloseUtils.safeClose(out); } System.out.print('.'); }
From source file:org.psystems.dicom.daemon.Dcm2Jpg.java
public void convert(File src, File dest) throws IOException { Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("DICOM"); ImageReader reader = iter.next(); DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam(); param.setWindowCenter(center);//from ww w . j a v a 2 s. c o m param.setWindowWidth(width); param.setVoiLutFunction(vlutFct); param.setPresentationState(prState); param.setPValue2Gray(pval2gray); param.setAutoWindowing(autoWindowing); ImageInputStream iis = ImageIO.createImageInputStream(src); BufferedImage bi; OutputStream out = null; try { reader.setInput(iis, false); if (reader.getNumImages(false) <= 0) { System.out.println("\nError: " + src + " - Don't haven any images!"); return; } // System.out.println("!!! frame="+frame+" p="+reader.getNumImages(false)); bi = reader.read(frame - 1, param); if (bi == null) { System.out.println("\nError: " + src + " - couldn't read!"); return; } out = new BufferedOutputStream(new FileOutputStream(dest)); JPEGImageEncoder enc = JPEGCodec.createJPEGEncoder(out); enc.encode(bi); } finally { CloseUtils.safeClose(iis); CloseUtils.safeClose(out); } System.out.print('.'); }
From source file:org.dcm4che2.tool.dcm2jpg.Dcm2Jpg.java
public void convert(File src, File dest) throws IOException { Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("DICOM"); ImageReader reader = iter.next(); DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam(); param.setWindowCenter(center);/*from w w w . j ava 2 s . com*/ param.setWindowWidth(width); param.setVoiLutFunction(vlutFct); param.setPresentationState(prState); param.setPValue2Gray(pval2gray); param.setAutoWindowing(autoWindowing); ImageInputStream iis = ImageIO.createImageInputStream(src); BufferedImage bi; try { reader.setInput(iis, false); bi = reader.read(frame - 1, param); if (bi == null) { System.out.println("\nError: " + src + " - couldn't read!"); return; } if (imageWriterClassname == null) { encodeByJPEGEncoder(bi, dest); } else { encodeByImageIO(bi, dest); } } finally { CloseUtils.safeClose(iis); } System.out.print('.'); }
From source file:com.sketchy.utils.image.SketchyImage.java
public static SketchyImage load(File file) throws Exception { SketchyImage sketchyImage = null;/*from w w w. j av a 2 s .c o m*/ if (!file.exists() || !file.canRead()) { throw new Exception("Can not find or read File: " + file.getPath() + "!"); } if (!StringUtils.endsWithIgnoreCase(file.getName(), ".png")) { throw new Exception("Can not load SketchyImage! Must be a .png file!"); } Iterator<ImageReader> imageReaders = ImageIO.getImageReadersByFormatName("png"); ImageReader imageReader = null; if (imageReaders.hasNext()) { // Just get first one imageReader = imageReaders.next(); } if (imageReader == null) { // this should never happen!! if so.. we got problems throw new Exception("Can not find ImageReader for .png Files!"); } ImageInputStream is = null; try { is = ImageIO.createImageInputStream(file); imageReader.setInput(is, true); IIOMetadata metaData = imageReader.getImageMetadata(0); // always get first image IIOMetadataNode metaDataNode = (IIOMetadataNode) metaData .getAsTree(metaData.getNativeMetadataFormatName()); if (metaDataNode == null) { throw new Exception("Error retreiving MetaData properties from .png File!"); } NodeList childNodes = metaDataNode.getElementsByTagName("pHYs"); // only look in the first node if (childNodes.getLength() == 0) { throw new Exception("Invalid SketchyImage file. It must contain 'pixelsPerUnit' MetaData!"); } IIOMetadataNode physNode = (IIOMetadataNode) childNodes.item(0); String pixelsPerUnitXAxisAttribute = physNode.getAttribute("pixelsPerUnitXAxis"); String pixelsPerUnitYAxisAttribute = physNode.getAttribute("pixelsPerUnitYAxis"); // String unitSpecifierAttribute = physNode.getAttribute("unitSpecifier"); Just assuming meter if (StringUtils.isBlank(pixelsPerUnitXAxisAttribute)) { throw new Exception("Invalid SketchyImage file. It must contain 'pixelsPerUnitXAxis' MetaData!"); } if (StringUtils.isBlank(pixelsPerUnitYAxisAttribute)) { throw new Exception("Invalid SketchyImage file. It must contain 'pixelsPerUnitYAxis' MetaData!"); } int pixelsPerUnitXAxis; try { pixelsPerUnitXAxis = Integer.parseInt(pixelsPerUnitXAxisAttribute); if (pixelsPerUnitXAxis <= 0) throw new Exception("Value must be > 0"); } catch (Exception e) { throw new Exception("Invalid 'pixelsPerUnitXAxis' MetaData Attribute! " + e.getMessage()); } int pixelsPerUnitYAxis; try { pixelsPerUnitYAxis = Integer.parseInt(pixelsPerUnitYAxisAttribute); if (pixelsPerUnitYAxis <= 0) throw new Exception("Value must be > 0"); } catch (Exception e) { throw new Exception("Invalid 'pixelsPerUnitYAxis' MetaData Attribute! " + e.getMessage()); } // We successfully processed the MetaData.. now read/set the image BufferedImage bufferedImage = imageReader.read(0); // always get first image double xPixelsPerMM = pixelsPerUnitXAxis / 1000.0; double yPixelsPerMM = pixelsPerUnitYAxis / 1000.0; sketchyImage = new SketchyImage(bufferedImage, xPixelsPerMM, yPixelsPerMM); } catch (Exception e) { throw new Exception("Error Loading SketchyImage File: " + file.getPath() + "! " + e.getMessage()); } finally { IOUtils.closeQuietly(is); } return sketchyImage; }
From source file:org.photovault.image.ImageIOImage.java
/** * Parse JPEG metadata structure and store the data in metadata and exifData fields * @param top The metadata object tree in format "javax_imageio_jpeg_image_1.0" *///from ww w .j a v a 2 s . co m private void parseJPEGMetadata(IIOMetadataNode top) { NodeList candidates = top.getElementsByTagName("unknown"); for (int n = 0; n < candidates.getLength(); n++) { Node node = candidates.item(n); if (node instanceof IIOMetadataNode) { IIOMetadataNode m = (IIOMetadataNode) node; Object obj = m.getUserObject(); if (obj instanceof byte[]) { byte[] data = (byte[]) obj; if (data[0] == 'E' && data[1] == 'x' && data[2] == 'i' && data[3] == 'f') { log.debug("exif data found"); InputStream is = new ByteArrayInputStream(data, 6, data.length - 6); try { ImageInputStream metadataStream = ImageIO.createImageInputStream(is); Iterator readers = ImageIO.getImageReadersByFormatName("TIFF"); if (readers.hasNext()) { ImageReader reader = (ImageReader) readers.next(); reader.setInput(metadataStream); IIOMetadata iioMetadata = reader.getImageMetadata(0); this.metadata = TIFFDirectory.createFromMetadata(iioMetadata); TIFFField exifField = this.metadata .getTIFFField(EXIFParentTIFFTagSet.TAG_EXIF_IFD_POINTER); } } catch (IOException ex) { ex.printStackTrace(); } } else if (data.length > 28 && data[28] == 0) { String id = null; try { id = new String(data, 0, 28, "utf-8"); } catch (UnsupportedEncodingException e) { log.error(e); } if ("http://ns.adobe.com/xap/1.0/".equals(id)) { // XMP metadata try { String xmpPacket = new String(data, 29, data.length - 29, "utf-8"); XMPMeta xmp = XMPMetaFactory.parseFromString(xmpPacket); log.debug("Found XMP metadata"); } catch (XMPException e) { log.warn("caught XMP exception while parsing metadata", e); } catch (UnsupportedEncodingException e) { log.error(e); } } } } } } }
From source file:edu.emory.library.tast.images.admin.ImagesBean.java
public String uploadNewImage() { try {/* w w w. j ava2 s . c o m*/ if (uploadedImage == null) return null; // check type String extension = (String) allowedTypes.get(uploadedImage.getContentType()); if (extension == null) return null; // new filename File file = null; String fileName = null; String imageDir = AppConfig.getConfiguration().getString(AppConfig.IMAGES_DIRECTORY); do { fileName = new UidGenerator().generate() + "." + extension; file = new File(imageDir, fileName); } while (file.exists()); // copy FileOutputStream imgFileStream = new FileOutputStream(file); int size = IOUtils.copy(uploadedImage.getInputStream(), imgFileStream); imgFileStream.flush(); imgFileStream.close(); // get image info Iterator readerIter = ImageIO.getImageReadersByFormatName(extension); ImageReader rdr = (ImageReader) readerIter.next(); if (rdr == null) return null; rdr.setInput(ImageIO.createImageInputStream(file), true); // get width and height int width = rdr.getWidth(0); int height = rdr.getHeight(0); // replace current image imageWidth = width; imageHeight = height; imageSize = size; imageMimeType = uploadedImage.getContentType(); imageFileName = fileName; // all ok uploadBoxShown = false; } catch (IOException e) { throw new RuntimeException(e); } return null; }
From source file:com.funambol.foundation.util.MediaUtils.java
/** * Creates the thumbnail.//from w w w .ja va2s .c o m * * @param imageFile the image file * @param thumbFile the empty thumbnail file * @param thumbX the width of the thumbnail * @param thumbY the height of the thumbnail * @param imageName the image file name with extension * @param tolerance the percentage of tolerance before creating a thumbnail * @return true is the thumbnail has been created, false otherwise * @throws IOException if an error occurs */ private static boolean createThumbnail(File imageFile, File thumbFile, int thumbX, int thumbY, String imageName, double tolerance) throws IOException { FileInputStream fileis = null; ImageInputStream imageis = null; Iterator readers = null; try { readers = ImageIO.getImageReadersByFormatName(imageName.substring(imageName.lastIndexOf('.') + 1)); if (readers == null || (!readers.hasNext())) { throw new IOException("File not supported"); } ImageReader reader = (ImageReader) readers.next(); fileis = new FileInputStream(imageFile); imageis = ImageIO.createImageInputStream(fileis); reader.setInput(imageis, true); // Determines thumbnail height, width and quality int thumbWidth = thumbX; int thumbHeight = thumbY; double thumbRatio = (double) thumbWidth / (double) thumbHeight; int imageWidth = reader.getWidth(0); int imageHeight = reader.getHeight(0); // // Don't create the thumbnail if the original file is smaller // than required size increased by % tolerance // if (imageWidth <= (thumbWidth * (1 + tolerance / 100)) && imageHeight <= (thumbHeight * (1 + tolerance / 100))) { return false; } double imageRatio = (double) imageWidth / (double) imageHeight; if (thumbRatio < imageRatio) { thumbHeight = (int) (thumbWidth / imageRatio); } else { thumbWidth = (int) (thumbHeight * imageRatio); } ImageReadParam param = reader.getDefaultReadParam(); param.setSourceSubsampling(3, 3, 0, 0); BufferedImage bi = reader.read(0, param); Image thumb = bi.getScaledInstance(thumbWidth, thumbHeight, Image.SCALE_SMOOTH); BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB); Graphics2D graphics2D = thumbImage.createGraphics(); graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); graphics2D.drawImage(thumb, 0, 0, thumbWidth, thumbHeight, null); FileOutputStream fileOutputStream = new FileOutputStream(thumbFile); ImageIO.write(thumbImage, "jpg", fileOutputStream); thumb.flush(); thumbImage.flush(); fileOutputStream.flush(); fileOutputStream.close(); graphics2D.dispose(); } finally { if (fileis != null) { fileis.close(); } if (imageis != null) { imageis.close(); } } return true; }
From source file:org.geoserver.wcs.GetCoverageTest.java
@Test public void testRasterFilterGreen() throws Exception { String queryString = "wcs?identifier=" + getLayerId(MOSAIC) + "&request=getcoverage" + "&service=wcs&version=1.1.1&&format=image/tiff" + "&BoundingBox=0,0,1,1,urn:ogc:def:crs:EPSG:6.6:4326" + "&CQL_FILTER=location like 'green%25'"; MockHttpServletResponse response = getAsServletResponse(queryString); // parse the multipart, check there are two parts Multipart multipart = getMultipart(response); assertEquals(2, multipart.getCount()); BodyPart coveragePart = multipart.getBodyPart(1); assertEquals("image/tiff", coveragePart.getContentType()); assertEquals("<theCoverage>", coveragePart.getHeader("Content-ID")[0]); // make sure we can read the coverage back ImageReader reader = ImageIO.getImageReadersByFormatName("tiff").next(); reader.setInput(ImageIO.createImageInputStream(coveragePart.getInputStream())); RenderedImage image = reader.read(0); // check the pixel int[] pixel = new int[3]; image.getData().getPixel(0, 0, pixel); assertEquals(0, pixel[0]);//from w w w . j a v a2 s.c om assertEquals(255, pixel[1]); assertEquals(0, pixel[2]); }
From source file:org.geoserver.wcs.GetCoverageTest.java
@Test public void testRasterFilterRed() throws Exception { String queryString = "wcs?identifier=" + getLayerId(MOSAIC) + "&request=getcoverage" + "&service=wcs&version=1.1.1&&format=image/tiff" + "&BoundingBox=0,0,1,1,urn:ogc:def:crs:EPSG:6.6:4326" + "&CQL_FILTER=location like 'red%25'"; MockHttpServletResponse response = getAsServletResponse(queryString); // parse the multipart, check there are two parts Multipart multipart = getMultipart(response); assertEquals(2, multipart.getCount()); BodyPart coveragePart = multipart.getBodyPart(1); assertEquals("image/tiff", coveragePart.getContentType()); assertEquals("<theCoverage>", coveragePart.getHeader("Content-ID")[0]); // make sure we can read the coverage back ImageReader reader = ImageIO.getImageReadersByFormatName("tiff").next(); reader.setInput(ImageIO.createImageInputStream(coveragePart.getInputStream())); RenderedImage image = reader.read(0); // check the pixel int[] pixel = new int[3]; image.getData().getPixel(0, 0, pixel); assertEquals(255, pixel[0]);/*from w w w .j ava 2s . co m*/ assertEquals(0, pixel[1]); assertEquals(0, pixel[2]); }
From source file:org.geoserver.wcs.GetCoverageTest.java
@Test public void testReadNoGridCRS() throws Exception { String request = // " <wcs:GetCoverage service=\"WCS\" version=\"1.1.1\" " + " xmlns:wcs=\"http://www.opengis.net/wcs/1.1.1\" " + " xmlns:gml=\"http://www.opengis.net/gml\"" + " xmlns:ows=\"http://www.opengis.net/ows/1.1\" >\n" + " <ows:Identifier>" + getLayerId(MockData.TASMANIA_DEM) + " </ows:Identifier>\n" + " <wcs:DomainSubset>\n" + " <ows:BoundingBox crs=\"http://www.opengis.net/gml/srs/epsg.xml#4326\">\n" + " <ows:LowerCorner>-180.0 -90.0</ows:LowerCorner>\n" + " <ows:UpperCorner>180.0 90.0</ows:UpperCorner>\n" + " </ows:BoundingBox>\n" // + " </wcs:DomainSubset>\n" + " <wcs:Output format=\"image/tiff\"/>\n" + " </wcs:GetCoverage>"; MockHttpServletResponse response = postAsServletResponse("wcs", request); // parse the multipart, check there are two parts Multipart multipart = getMultipart(response); assertEquals(2, multipart.getCount()); BodyPart coveragePart = multipart.getBodyPart(1); assertEquals("image/tiff", coveragePart.getContentType()); assertEquals("<theCoverage>", coveragePart.getHeader("Content-ID")[0]); // make sure we can read the coverage back ImageReader reader = ImageIO.getImageReadersByFormatName("tiff").next(); reader.setInput(ImageIO.createImageInputStream(coveragePart.getInputStream())); RenderedImage image = reader.read(0); }