public static BufferedImage getBufferedImage(InputStream is) { try { final Class<?> clVP8Decoder = Class.forName("net.sourceforge.plantuml.webp.VP8Decoder"); final Object vp8Decoder = clVP8Decoder.newInstance(); // final VP8Decoder vp8Decoder = new VP8Decoder(); final Method decodeFrame = clVP8Decoder.getMethod("decodeFrame", ImageInputStream.class); final ImageInputStream iis = ImageIO.createImageInputStream(is); decodeFrame.invoke(vp8Decoder, iis); // vp8Decoder.decodeFrame(iis); iis.close(); final Object frame = clVP8Decoder.getMethod("getFrame").invoke(vp8Decoder); return (BufferedImage) frame.getClass().getMethod("getBufferedImage").invoke(frame); // final VP8Frame frame = vp8Decoder.getFrame(); // return frame.getBufferedImage(); } catch (Exception e) { e.printStackTrace(); return null; } }
public void setFrame(ImageInputStream frame) { try { this.frame.flush(); this.frame.close(); this.frame = frame; offset = frame.getStreamPosition(); this.coefProbs=Globals.getDefaultCoefProbs(); tokenBoolDecoders = new Vector<BoolDecoder>(); } catch (IOException e) { e.printStackTrace(); } } }
@Override public RenderedImage readFrom( Class<RenderedImage> type, Type genericType, Annotation annotations[], MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException { if (IMAGE_MEDIA_TYPE.isCompatible(mediaType)) { Iterator<ImageReader> readers = ImageIO.getImageReadersByMIMEType(mediaType.toString()); if (!readers.hasNext()) { throw new IOException("The image-based media type " + mediaType + "is not supported for reading"); } ImageReader reader = readers.next(); ImageInputStream in = ImageIO.createImageInputStream(entityStream); reader.setInput(in, true, true); BufferedImage bi = reader.read(0, reader.getDefaultReadParam()); in.close(); reader.dispose(); return bi; } else { return ImageIO.read(entityStream); } }
@Override public RenderedImage readFrom( Class<RenderedImage> type, Type genericType, Annotation annotations[], MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException { if (IMAGE_MEDIA_TYPE.isCompatible(mediaType)) { Iterator<ImageReader> readers = ImageIO.getImageReadersByMIMEType(mediaType.toString()); if (!readers.hasNext()) { throw new IOException("The image-based media type " + mediaType + "is not supported for reading"); } ImageReader reader = readers.next(); ImageInputStream in = ImageIO.createImageInputStream(entityStream); reader.setInput(in, true, true); BufferedImage bi = reader.read(0, reader.getDefaultReadParam()); in.close(); reader.dispose(); return bi; } else { return ImageIO.read(entityStream); } }
ERR.log(Level.INFO, "Image "+name+" is not PNG", ioe1); stream.close();
imageInputStream.close();
imageInputStream.close();
public static void main(final String[] pArgs) throws IOException { ImageInputStream stream = ImageIO.createImageInputStream(new File(pArgs[0])); Reader xmp; while ((xmp = scanForXMPPacket(stream)) != null) { BufferedReader reader = new BufferedReader(xmp); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } stream.close(); } }
IIOMetadata readMetadata() throws IOException { ImageInputStream input = new ByteArrayImageInputStream(segment.thumbnail); try { reader.setInput(input); return reader.getImageMetadata(0); } finally { input.close(); } }
@Test public void testGetQualityAltSample1() throws IOException { ImageInputStream stream = ImageIO.createImageInputStream(getClass().getResourceAsStream("/jpeg/exif-rgb-thumbnail-bad-exif-kodak-dc210.jpg")); try { assertEquals(.79f, JPEGQuality.getJPEGQuality(stream), DELTA); } finally { stream.close(); } }
@Test public void testGetQuality() throws IOException { ImageInputStream stream = ImageIO.createImageInputStream(getClass().getResourceAsStream("/jpeg/9788245605525.jpg")); try { assertEquals(.92f, JPEGQuality.getJPEGQuality(stream), DELTA); } finally { stream.close(); } }
@Test public void testGetQualityAltSample2() throws IOException { ImageInputStream stream = ImageIO.createImageInputStream(getClass().getResourceAsStream("/jpeg/ts_open_300dpi.jpg")); try { assertEquals(.99f, JPEGQuality.getJPEGQuality(stream), DELTA); } finally { stream.close(); } }
@Ignore("Need a JPEG test image with bad DQT data...") @Test public void testGetQualityBadData() throws IOException { ImageInputStream stream = ImageIO.createImageInputStream(getClass().getResourceAsStream("/bad-data")); try { assertEquals(-1f, JPEGQuality.getJPEGQuality(stream), DELTA); } finally { stream.close(); } }
@Override protected JFIFThumbnailReader createReader(ThumbnailReadProgressListener progressListener, int imageIndex, int thumbnailIndex, ImageInputStream stream) throws IOException { List<JPEGSegment> segments = JPEGSegmentUtil.readSegments(stream, JPEG.APP0, "JFIF"); stream.close(); assertNotNull(segments); assertFalse(segments.isEmpty()); JPEGSegment segment = segments.get(0); return new JFIFThumbnailReader(progressListener, imageIndex, thumbnailIndex, JFIF.read(new DataInputStream(segment.segmentData()), segment.segmentLength())); }
@Override protected JFXXThumbnailReader createReader(ThumbnailReadProgressListener progressListener, int imageIndex, int thumbnailIndex, ImageInputStream stream) throws IOException { List<JPEGSegment> segments = JPEGSegmentUtil.readSegments(stream, JPEG.APP0, "JFXX"); stream.close(); assertNotNull(segments); assertFalse(segments.isEmpty()); JPEGSegment jfxx = segments.get(0); return new JFXXThumbnailReader(progressListener, ImageIO.getImageReadersByFormatName("jpeg").next(), imageIndex, thumbnailIndex, JFXX.read(new DataInputStream(jfxx.segmentData()), jfxx.length())); }