Example usage for javax.imageio.metadata IIOMetadataFormatImpl standardMetadataFormatName

List of usage examples for javax.imageio.metadata IIOMetadataFormatImpl standardMetadataFormatName

Introduction

In this page you can find the example usage for javax.imageio.metadata IIOMetadataFormatImpl standardMetadataFormatName.

Prototype

String standardMetadataFormatName

To view the source code for javax.imageio.metadata IIOMetadataFormatImpl standardMetadataFormatName.

Click Source Link

Document

A String constant containing the standard format name, "javax_imageio_1.0" .

Usage

From source file:Main.java

public static IIOMetadataFormat instantiateMetadataFormat(String formatName, boolean standardFormatSupported,
        String nativeMetadataFormatName, String nativeMetadataFormatClassName,
        String[] extraMetadataFormatNames, String[] extraMetadataFormatClassNames) {
    if (formatName == null) {
        throw new IllegalArgumentException("formatName == null!");
    }/* w  w w  . ja va2  s  .c om*/
    if (formatName.equals(IIOMetadataFormatImpl.standardMetadataFormatName)) {
        if (standardFormatSupported) {
            return IIOMetadataFormatImpl.getStandardFormatInstance();
        }
    }

    String className = null;

    if (formatName.equals(nativeMetadataFormatName)) {
        className = nativeMetadataFormatClassName;
    } else if (extraMetadataFormatNames != null) {
        for (int i = 0; i < extraMetadataFormatNames.length; i++) {
            if (formatName.equals(extraMetadataFormatNames[i])) {
                className = extraMetadataFormatClassNames[i];
                break;
            }
        }
    }

    if (className == null) {
        throw new IllegalArgumentException("Unsupported format name");
    }

    // Get the context class loader and try to use it first
    ClassLoader contextClassloader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
        public ClassLoader run() {
            return Thread.currentThread().getContextClassLoader();
        }
    });

    Class cls;

    try {
        cls = Class.forName(className, true, contextClassloader);
    } catch (ClassNotFoundException e) {
        try {
            // Use current class loader
            cls = Class.forName(className);
        } catch (ClassNotFoundException e1) {
            throw new IllegalStateException("Can't obtain format");
        }
    }

    try {
        //???AWT:
        //Method getInstance = cls.getMethod("getInstance");
        //return (IIOMetadataFormat) getInstance.invoke(null);
        return null;
    } catch (Exception e) {
        IllegalStateException e1 = new IllegalStateException("Can't obtain format");
        e1.initCause(e); // Add some details to the message
        throw e1;
    }
}

From source file:org.apache.xmlgraphics.image.loader.impl.imageio.ImageLoaderImageIO.java

/** {@inheritDoc} */
public Image loadImage(ImageInfo info, Map hints, ImageSessionContext session)
        throws ImageException, IOException {
    RenderedImage imageData = null;
    IIOException firstException = null;

    IIOMetadata iiometa = (IIOMetadata) info.getCustomObjects().get(ImageIOUtil.IMAGEIO_METADATA);
    boolean ignoreMetadata = (iiometa != null);
    boolean providerIgnoresICC = false;

    Source src = session.needSource(info.getOriginalURI());
    ImageInputStream imgStream = ImageUtil.needImageInputStream(src);
    try {//from ww  w .  jav a2  s. c o  m
        Iterator iter = ImageIO.getImageReaders(imgStream);
        while (iter.hasNext()) {
            ImageReader reader = (ImageReader) iter.next();
            try {
                imgStream.mark();
                ImageReadParam param = reader.getDefaultReadParam();
                reader.setInput(imgStream, false, ignoreMetadata);
                final int pageIndex = ImageUtil.needPageIndexFromURI(info.getOriginalURI());
                try {
                    if (ImageFlavor.BUFFERED_IMAGE.equals(this.targetFlavor)) {
                        imageData = reader.read(pageIndex, param);
                    } else {
                        imageData = reader.read(pageIndex, param);
                        //imageData = reader.readAsRenderedImage(pageIndex, param);
                        //TODO Reenable the above when proper listeners are implemented
                        //to react to late pixel population (so the stream can be closed
                        //properly).
                    }
                    if (iiometa == null) {
                        iiometa = reader.getImageMetadata(pageIndex);
                    }
                    providerIgnoresICC = checkProviderIgnoresICC(reader.getOriginatingProvider());
                    break; //Quit early, we have the image
                } catch (IndexOutOfBoundsException indexe) {
                    throw new ImageException("Page does not exist. Invalid image index: " + pageIndex);
                } catch (IllegalArgumentException iae) {
                    //Some codecs like com.sun.imageio.plugins.wbmp.WBMPImageReader throw
                    //IllegalArgumentExceptions when they have trouble parsing the image.
                    throw new ImageException("Error loading image using ImageIO codec", iae);
                } catch (IIOException iioe) {
                    if (firstException == null) {
                        firstException = iioe;
                    } else {
                        log.debug("non-first error loading image: " + iioe.getMessage());
                    }
                }
                try {
                    //Try fallback for CMYK images
                    BufferedImage bi = getFallbackBufferedImage(reader, pageIndex, param);
                    imageData = bi;
                    firstException = null; //Clear exception after successful fallback attempt
                    break;
                } catch (IIOException iioe) {
                    //ignore
                }
                imgStream.reset();
            } finally {
                reader.dispose();
            }
        }
    } finally {
        ImageUtil.closeQuietly(src);
        //TODO Some codecs may do late reading.
    }
    if (firstException != null) {
        throw new ImageException("Error while loading image: " + firstException.getMessage(), firstException);
    }
    if (imageData == null) {
        throw new ImageException("No ImageIO ImageReader found .");
    }

    ColorModel cm = imageData.getColorModel();

    Color transparentColor = null;
    if (cm instanceof IndexColorModel) {
        //transparent color will be extracted later from the image
    } else {
        if (providerIgnoresICC && cm instanceof ComponentColorModel) {
            // Apply ICC Profile to Image by creating a new image with a new
            // color model.
            ICC_Profile iccProf = tryToExctractICCProfile(iiometa);
            if (iccProf != null) {
                ColorModel cm2 = new ComponentColorModel(new ICC_ColorSpace(iccProf), cm.hasAlpha(),
                        cm.isAlphaPremultiplied(), cm.getTransparency(), cm.getTransferType());
                WritableRaster wr = Raster.createWritableRaster(imageData.getSampleModel(), null);
                imageData.copyData(wr);
                BufferedImage bi = new BufferedImage(cm2, wr, cm2.isAlphaPremultiplied(), null);
                imageData = bi;
                cm = cm2;
            }
        }
        // ImageIOUtil.dumpMetadataToSystemOut(iiometa);
        // Retrieve the transparent color from the metadata
        if (iiometa != null && iiometa.isStandardMetadataFormatSupported()) {
            Element metanode = (Element) iiometa.getAsTree(IIOMetadataFormatImpl.standardMetadataFormatName);
            Element dim = ImageIOUtil.getChild(metanode, "Transparency");
            if (dim != null) {
                Element child;
                child = ImageIOUtil.getChild(dim, "TransparentColor");
                if (child != null) {
                    String value = child.getAttribute("value");
                    if (value == null || value.length() == 0) {
                        //ignore
                    } else if (cm.getNumColorComponents() == 1) {
                        int gray = Integer.parseInt(value);
                        transparentColor = new Color(gray, gray, gray);
                    } else {
                        StringTokenizer st = new StringTokenizer(value);
                        transparentColor = new Color(Integer.parseInt(st.nextToken()),
                                Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
                    }
                }
            }
        }
    }

    if (ImageFlavor.BUFFERED_IMAGE.equals(this.targetFlavor)) {
        return new ImageBuffered(info, (BufferedImage) imageData, transparentColor);
    } else {
        return new ImageRendered(info, imageData, transparentColor);
    }
}