BufferedImage getThumbnail(ImageInputStream iis, JPEGImageReader reader) throws IOException { iis.mark(); iis.seek(streamPos); JPEGImageReader thumbReader = new JPEGImageReader(null); thumbReader.setInput(iis); thumbReader.addIIOReadProgressListener(new ThumbnailReadListener(reader)); BufferedImage ret = thumbReader.read(0, null); thumbReader.dispose(); iis.reset(); return ret; }
BufferedImage getThumbnail(ImageInputStream iis, int index, JPEGImageReader reader) throws IOException { reader.thumbnailStarted(index); BufferedImage ret = null; if ((thumb != null) && (index == 0)) { ret = thumb.getThumbnail(iis, reader); } else { if (thumb != null) { index--; } JFIFExtensionMarkerSegment jfxx = (JFIFExtensionMarkerSegment) extSegments.get(index); ret = jfxx.thumb.getThumbnail(iis, reader); } reader.thumbnailComplete(); return ret; }
void readByteBuffer( ImageInputStream iis, byte[] data, JPEGImageReader reader, float workPortion, float workOffset) throws IOException { int progInterval = Math.max((int) (data.length / 20 / workPortion), 1); for (int offset = 0; offset < data.length; ) { int len = Math.min(progInterval, data.length - offset); iis.read(data, offset, len); offset += progInterval; float percentDone = ((float) offset * 100) / data.length * workPortion + workOffset; if (percentDone > 100.0F) { percentDone = 100.0F; } reader.thumbnailProgress(percentDone); } }
public void imageProgress(ImageReader source, float percentageDone) { reader.thumbnailProgress(percentageDone); }