Package javax.imageio

Examples of javax.imageio.ImageReader


            Iterator iter = ImageIO.getImageReaders(imgStream);
            if (!iter.hasNext()) {
                log.error("No ImageReader found.");
                return false;
            }
            ImageReader reader = (ImageReader)iter.next();
            ImageReadParam param = reader.getDefaultReadParam();
            reader.setInput(imgStream, true, false);
            BufferedImage imageData = reader.read(0, param);
           
            //Read image resolution
            IIOMetadata iiometa = reader.getImageMetadata(0);
            if (iiometa != null && iiometa.isStandardMetadataFormatSupported()) {
                Element metanode = (Element)iiometa.getAsTree("javax_imageio_1.0");
                Element dim = getChild(metanode, "Dimension");
                if (dim != null) {
                    Element child;
                    child = getChild(dim, "HorizontalPixelSize");
                    if (child != null) {
                        this.dpiHorizontal = UnitConv.IN2MM
                                / Float.parseFloat(child.getAttribute("value"));
                    }
                    child = getChild(dim, "VerticalPixelSize");
                    if (child != null) {
                        this.dpiVertical = UnitConv.IN2MM
                                / Float.parseFloat(child.getAttribute("value"));
                    }
                }
            }
            imgStream.close();
            reader.dispose();
           
            this.height = imageData.getHeight();
            this.width = imageData.getWidth();

            ColorModel cm = imageData.getColorModel();
View Full Code Here


import junit.framework.TestCase;

public class ImageReaderSpiTest extends TestCase {
   
    private void testIsOwnReader(String format1, String format2) throws Exception {
        ImageReader reader1 = ImageIO.getImageReadersByFormatName(format1).next();
        ImageReaderSpi readerSpi1 = reader1.getOriginatingProvider();

        ImageReader reader2 = ImageIO.getImageReadersByFormatName(format2).next();
        ImageReaderSpi readerSpi2 = reader2.getOriginatingProvider();

        assertTrue(readerSpi1.isOwnReader(reader1));
        assertTrue(readerSpi2.isOwnReader(reader2));
        assertFalse(readerSpi1.isOwnReader(reader2));
        assertFalse(readerSpi2.isOwnReader(reader1));
View Full Code Here

            try {
                final ImageInputStream iis = ImageIO.createImageInputStream(new ByteArrayInputStream(imageBytes));
                final Iterator<ImageReader> imageReaders = ImageIO.getImageReaders(iis);
                if (imageReaders != null) {
                    while (imageReaders.hasNext()) {
                        final ImageReader reader = imageReaders.next();
                        final ImageType imageType = ImageType.findByFormatName(reader.getFormatName());
                        if (imageType != null) {
                            return imageType;
                        }
                    }
                }
View Full Code Here

       */
      MemoryCacheImageInputStream input = new MemoryCacheImageInputStream(
          imageUrl.openStream());
      Iterator<ImageReader> it = ImageIO.getImageReaders(input);
      readers : while (it.hasNext()) {
        ImageReader reader = it.next();
        reader.setInput(input);

        int numImages = reader.getNumImages(true);
        if (numImages == 0) {
          // Fall through

        } else if (numImages == 1) {
          try {
            image = reader.read(0);
            IIOMetadata metadata = reader.getImageMetadata(0);
            if (metadata != null
                && metadata.isStandardMetadataFormatSupported()) {
              // http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/metadata/doc-files/standard_metadata.html
              Node data = metadata.getAsTree(IIOMetadataFormatImpl.standardMetadataFormatName);
              metadata : for (int i = 0, j = data.getChildNodes().getLength(); i < j; i++) {
                Node child = data.getChildNodes().item(i);
                if (child.getLocalName().equalsIgnoreCase("compression")) {
                  for (int k = 0, l = child.getChildNodes().getLength(); k < l; k++) {
                    Node child2 = child.getChildNodes().item(k);
                    if (child2.getLocalName().equalsIgnoreCase("lossless")) {
                      Node value = child2.getAttributes().getNamedItem("value");
                      if (value == null) {
                        // The default is true, according to the DTD
                        lossy = false;
                      } else {
                        lossy = !Boolean.parseBoolean(value.getNodeValue());
                      }
                      break metadata;
                    }
                  }
                }
              }
            }
          } catch (Exception e) {
            // Hope we have another reader that can handle the image
            continue readers;
          }

        } else {
          // Read all contained images
          BufferedImage[] images = new BufferedImage[numImages];

          try {
            for (int i = 0; i < numImages; i++) {
              images[i] = reader.read(i);
            }
          } catch (Exception e) {
            // Hope we have another reader that can handle the image
            continue readers;
          }
View Full Code Here

            dl[3] = daylightMultipliers[1];
            dcraw.setWbCoeffs( dl );
           
            InputStream is = dcraw.getRawImageAsTiff( f );
            Iterator readers = ImageIO.getImageReadersByFormatName( "TIFF" );
            ImageReader reader = (ImageReader)readers.next();
            log.debug( "Creating stream" );
            ImageInputStream iis = ImageIO.createImageInputStream( is );
            reader.setInput( iis, false, false );
            BufferedImage img = reader.read( 0 );
           
            // Ensure that the image has the correct color space information
            WritableRaster r = img.getRaster();
            ColorSpace cs = ColorSpace.getInstance( ColorSpace.CS_LINEAR_RGB );
            ColorModel targetCM = new ComponentColorModel( cs, new int[]{16,16,16},
                    false, false, Transparency.OPAQUE, DataBuffer.TYPE_USHORT );
            rawImage = new TiledImage( new BufferedImage( targetCM, r,
                    true, null ), 256, 256 );

           
            final float[] DEFAULT_KERNEL_1D = {0.25f,0.5f,0.25f};
            ParameterBlock pb = new ParameterBlock();
            KernelJAI kernel = new KernelJAI(DEFAULT_KERNEL_1D.length,
                                             DEFAULT_KERNEL_1D.length,
                                             DEFAULT_KERNEL_1D.length/2,
                                             DEFAULT_KERNEL_1D.length/2,
                                             DEFAULT_KERNEL_1D,
                                             DEFAULT_KERNEL_1D);
            pb.add(kernel);
            BorderExtender extender =
                BorderExtender.createInstance(BorderExtender.BORDER_COPY);
            RenderingHints hints =
                JAI.getDefaultInstance().getRenderingHints();
            if(hints == null) {
                hints = new RenderingHints(JAI.KEY_BORDER_EXTENDER, extender);
            } else {
                hints.put(JAI.KEY_BORDER_EXTENDER, extender);
            }
                                  
            RenderedOp filter = new RenderedOp("convolve", pb, hints);
            // javax.media.jai.operator.BoxFilterDescriptor.create( null, new Integer(2), new Integer(2), new Integer(0), new Integer(0), null );

            // Add the subsampling operation.
            pb = new ParameterBlock();
            pb.addSource(filter);
            pb.add(new Float(0.5F)).add(new Float(0.5F));
            pb.add(new Float(0.0F)).add(new Float(0.0F));
            pb.add(Interpolation.getInstance(Interpolation.INTERP_NEAREST));
            RenderedOp downSampler = new RenderedOp("scale", pb, null);           
            // downSampler = javax.media.jai.operator.BoxFilterDescriptor.create( null, new Integer(2), new Integer(2), new Integer(0), new Integer(0), null );
           
            RenderableOp rawImageRenderable =
                    RenderableDescriptor.createRenderable( rawImage,
                    downSampler, null, null, null, null, null );
            double colorCorrMat[][] = new double[][] {
                {colorCorr[0], 0.0, 0.0, 0.0 },
                {0.0, colorCorr[1], 0.0, 0.0 },
                {0.0, 0.0, colorCorr[2], 0.0 }
            };
           
            wbAdjustedRawImage =
                    BandCombineDescriptor.createRenderable( rawImageRenderable,
                    colorCorrMat, null );
           
            reader.getImageMetadata( 0 );
            rawIsHalfSized = dcraw.ishalfSize();
           
            createHistogram();
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
View Full Code Here

                        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 metadata = reader.getImageMetadata( 0 );
                                this.metadata = TIFFDirectory.createFromMetadata( metadata );
                                TIFFField exifField = this.metadata.getTIFFField( EXIFParentTIFFTagSet.TAG_EXIF_IFD_POINTER );
                                if ( exifField != null ) {
                                    exifData = (TIFFDirectory) exifField.getData();
                                }
View Full Code Here

     * Get a proper image reader for a file based on file name extension.
     * @param f The file
     * @return Correct Reader or <CODE>null</CODE> if no proper reader is found.
     */
    static private ImageReader getImageReader( File f ) {
        ImageReader ret = null;
        if ( f != null ) {
            String fname = f.getName();
            int lastDotPos = fname.lastIndexOf( "." );
            if ( lastDotPos > 0 && lastDotPos < fname.length()-1 ) {
                String suffix = fname.substring( lastDotPos+1 );
View Full Code Here

     to speed up loading.
     */
    private void load( boolean loadImage, boolean loadMetadata,
            int minWidth, int minHeight, boolean isLowQualityAllowed ) {
        if ( f != null && f.canRead() ) {
            ImageReader reader = getImageReader( f );
            if ( reader != null ) {
                log.debug( "Creating stream" );
                ImageInputStream iis = null;
                try {
                    iis = ImageIO.createImageInputStream( f );
                    reader.setInput( iis, false, false );
                    width = reader.getWidth( 0 );
                    height = reader.getHeight( 0 );
                    if ( loadImage ) {
                        RenderedImage ri = null;
                        if ( isLowQualityAllowed ) {
                            ri = readExifThumbnail( f );
                            if ( ri == null || !isOkForThumbCreation( ri.getWidth(),
                                ri.getHeight(), minWidth, minHeight,
                                    reader.getAspectRatio( 0 ), 0.01 ) ) {
                                /*
                                 EXIF thumbnail either did not exist or was unusable,
                                 try to read subsampled version of original
                                 */
                                ri = readSubsampled( reader, minWidth, minHeight );
                            }
                        } else {
                            /*
                             High quality image is requested.
                            
                             If the image is very large, use subsampling anyway
                             to decrease memory consumption & speed up interactive
                             operations. Anyway, most often user just views image
                             at screen resolution
                             */
                            ImageReadParam param = reader.getDefaultReadParam();
                           

                            if ( minWidth * 2 < width && minHeight * 2 < height ) {
                                param.setSourceSubsampling( 2, 2, 0, 0 );
                            }
                                ri = reader.read( 0, param );
                           
                        }
                        if ( ri != null ) {                           
                            /*
                             TODO: JAI seems to have problems in doing convolutions
                             for large image tiles. Split image to reasonably sized
                             tiles as a workaround for this.
                             */
                            ri = new TiledImage( ri, 256, 256 );
                            image =  new RenderedImageAdapter( ri );
                            originalSampleModel = image.getSampleModel();
                            originalColorModel = image.getColorModel();
                            final float[] DEFAULT_KERNEL_1D = {0.25f,0.5f,0.25f};
                            ParameterBlock pb = new ParameterBlock();
                            KernelJAI kernel = new KernelJAI(DEFAULT_KERNEL_1D.length,
                                    DEFAULT_KERNEL_1D.length,
                                    DEFAULT_KERNEL_1D.length/2,
                                    DEFAULT_KERNEL_1D.length/2,
                                    DEFAULT_KERNEL_1D,
                                    DEFAULT_KERNEL_1D);
                            pb.add(kernel);
                            BorderExtender extender =
                                    BorderExtender.createInstance(BorderExtender.BORDER_COPY);
                            RenderingHints hints =
                                    JAI.getDefaultInstance().getRenderingHints();
                            if(hints == null) {
                                hints = new RenderingHints(JAI.KEY_BORDER_EXTENDER, extender);
                            } else {
                                hints.put(JAI.KEY_BORDER_EXTENDER, extender);
                            }
                           
                            RenderedOp filter = new RenderedOp("convolve", pb, hints);
                            // javax.media.jai.operator.BoxFilterDescriptor.create( null, new Integer(2), new Integer(2), new Integer(0), new Integer(0), null );
                           
                            // Add the subsampling operation.
                            pb = new ParameterBlock();
                            pb.addSource(filter);
                            pb.add(new Float(0.5F)).add(new Float(0.5F));
                            pb.add(new Float(0.0F)).add(new Float(0.0F));
                            pb.add(Interpolation.getInstance(Interpolation.INTERP_NEAREST));
                            RenderedOp downSampler = new RenderedOp("scale", pb, null);
                           
                            renderableImage =
                                    RenderableDescriptor.createRenderable(
                                    image, downSampler, null, null, null, null, null );
                        } else {
                            image = null;
                            renderableImage = null;
                        }
                        imageIsLowQuality = isLowQualityAllowed;
                    }
                    if (loadMetadata ) {
                        Set<String> nodes = new HashSet<String>();
                        nodes.add( "unknown" );
                        IIOMetadata metadata = reader.getImageMetadata( 0,
                                "javax_imageio_jpeg_image_1.0", nodes );
                        if ( metadata != null ) {
                            Node tree = metadata.getAsTree( "javax_imageio_jpeg_image_1.0" );
                            log.debug( "read metadata: " + metadata.toString() );
                            this.parseJPEGMetadata( (IIOMetadataNode) tree);
View Full Code Here

      Iterator<ImageReader> readers = ImageIO.getImageReaders(imageInputStream);

      String formatName = null;
      if (readers.hasNext())
      {
        ImageReader read = readers.next();
        formatName = read.getFormatName();
      }

      return new ImageAndTypePair(formatName, ImageIO.read(imageInputStream));
    }
    catch (IOException e)
View Full Code Here

          .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();
View Full Code Here

TOP

Related Classes of javax.imageio.ImageReader

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.