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);
}