private BufferedImage readImage2(byte[] imageBytes) throws IOException { SeekableStream stream = new ByteArraySeekableStream(imageBytes); String decoderName = null; for (String dn : ImageCodec.getDecoderNames(stream)) { decoderName = dn; break; } ImageDecoder decoder = ImageCodec.createImageDecoder(decoderName, stream, null); PlanarImage img = PlanarImage.wrapRenderedImage(decoder.decodeAsRenderedImage()); return img.getAsBufferedImage(); }
String decoderName = null; for (String dn : ImageCodec.getDecoderNames(stream)) { decoderName = dn; break;
/** * Fallback Method, in some jre implementations, ImageIO.read(InputStream in) returns null. If * this happens, this method is called, which is not so efficient but it works * * @param imageBytes * @return * @throws IOException */ private BufferedImage readImage2(byte[] imageBytes) throws IOException { SeekableStream stream = new ByteArraySeekableStream(imageBytes); String decoderName = null; for (String dn : ImageCodec.getDecoderNames(stream)) { decoderName = dn; break; } ImageDecoder decoder = ImageCodec.createImageDecoder(decoderName, stream, null); PlanarImage img = PlanarImage.wrapRenderedImage(decoder.decodeAsRenderedImage()); return img.getAsBufferedImage(); } }
for (String dn : ImageCodec.getDecoderNames(stream)) { decoderName = dn; break;
public static RenderedImage convertToRenderedImage(byte[] data) throws IOException { RenderedImage im = null; SeekableStream stream = new ByteArraySeekableStream(data); String[] names = ImageCodec.getDecoderNames(stream); if (names.length > 0) { ImageDecoder dec = ImageCodec.createImageDecoder(names[0], stream, null); im = dec.decodeAsRenderedImage(); } if (im == null) { ByteArray ba = new ByteArray(data); int len = ba.getLength() < 24 ? ba.getLength() : 24; log.warn("Unable to find codec for data: " + ba.readPns(0, len)); } return im; // An alternate way. Need to see if works with tiff images // BufferedImage ioResult = null; // stream = new ByteArraySeekableStream(data); // { // ImageInputStream iis = ImageIO.createImageInputStream(stream); // ioResult = ImageIO.read(iis); // } // Raster ioRaster = ioResult.getData(); }