public static BufferedImage decodeImage()

in src/main/java/org/apache/commons/imaging/formats/icns/IcnsDecoder.java [202:241]


    public static BufferedImage decodeImage(final IcnsImageParser.IcnsElement[] icnsElements, final int index)
            throws ImagingException {
        final IcnsImageParser.IcnsElement imageElement = icnsElements[index];
        final IcnsType imageType = IcnsType.findImageType(imageElement.type);
        if (imageType == null) {
            return null;
        }

        // PNG or JPEG 2000
        if (imageType == IcnsType.ICNS_16x16_32BIT_ARGB_IMAGE
            || imageType == IcnsType.ICNS_32x32_32BIT_ARGB_IMAGE
            || imageType == IcnsType.ICNS_64x64_32BIT_ARGB_IMAGE
            || imageType == IcnsType.ICNS_128x128_32BIT_ARGB_IMAGE
            || imageType == IcnsType.ICNS_256x256_32BIT_ARGB_IMAGE
            || imageType == IcnsType.ICNS_512x512_32BIT_ARGB_IMAGE
            || imageType == IcnsType.ICNS_1024x1024_32BIT_ARGB_IMAGE
            || imageType == IcnsType.ICNS_32x32_2x_32BIT_ARGB_IMAGE
            || imageType == IcnsType.ICNS_64x64_2x_32BIT_ARGB_IMAGE
            || imageType == IcnsType.ICNS_256x256_2x_32BIT_ARGB_IMAGE
            || imageType == IcnsType.ICNS_512x512_2x_32BIT_ARGB_IMAGE) {
            BufferedImage image = null;
            try {
                image = Imaging.getBufferedImage(imageElement.data);
            } catch (final Exception ex) {
                if (imageType.getWidth() <= 32) {
                    try {
                        image = decodeImageImpl(imageType, imageElement, icnsElements);
                    } catch (final Exception ignored) {
                        // ignored
                    }
                }
                if (image == null) {
                    image = new BufferedImage(imageType.getWidth(), imageType.getHeight(), BufferedImage.TYPE_INT_ARGB);
                }
            }
            return image;
        }

        return decodeImageImpl(imageType, imageElement, icnsElements);
    }