/** * add an image to the animation * @param image the image * @param delayMillis the frame time of the image in milliseconds * @param transparencyColorIndex the index of the transparent color, -1 if not used * @throws IOException */ public void addImage(RenderedImage image, int delayMillis, int transparencyColorIndex) throws IOException { if (this.counter == 0) { iiom = writer.getDefaultImageMetadata(ImageTypeSpecifier.createFromRenderedImage(image), iwp); writer.prepareWriteSequence(writer.getDefaultStreamMetadata(iwp)); } if (this.counter == 0 && loops >= 0) { IIOMetadata imageMetadata2 = writer.getDefaultImageMetadata(ImageTypeSpecifier.createFromRenderedImage(image), iwp); try { setMetadata(imageMetadata2, delayMillis, transparencyColorIndex); setLoops(imageMetadata2, this.loops); writer.writeToSequence(new IIOImage(image, null, imageMetadata2), iwp); } catch (final IIOInvalidTreeException e) { throw new IOException(e.getMessage()); } } else try { setMetadata(iiom, delayMillis, transparencyColorIndex); writer.writeToSequence(new IIOImage(image, null, iiom), iwp); } catch (final IIOInvalidTreeException e) { throw new IOException(e.getMessage()); } this.counter++; }
@Override public void prepareWriteSequence(final IIOMetadata streamMetadata) throws IOException { delegate.prepareWriteSequence(streamMetadata); }
@Test(expected = IllegalStateException.class) public void testPrepareSequenceAlreadyStarted() throws IOException { // ICNS only supports sizes in multiples of 2 (16, 32, 64, ..., 1024 + 48 and 96) ImageWriter writer = createImageWriter(); try (ImageOutputStream stream = ImageIO.createImageOutputStream(new ByteArrayOutputStream())) { writer.setOutput(stream); writer.prepareWriteSequence(null); writer.prepareWriteSequence(null); } finally { writer.dispose(); } }
writer.prepareWriteSequence(null);
param.setCompressionType(pngCompression ? "BI_PNG" : "BI_RGB"); writer.prepareWriteSequence(null);
@Test public void testWriteSequence() throws IOException { ImageWriter writer = createImageWriter(); ByteArrayOutputStream output = new ByteArrayOutputStream(); try (ImageOutputStream stream = ImageIO.createImageOutputStream(output)) { writer.setOutput(stream); writer.prepareWriteSequence(null); for (RenderedImage image : getTestData()) { IIOImage iioImage = new IIOImage(image, null, null); writer.writeToSequence(iioImage, writer.getDefaultWriteParam()); } writer.endWriteSequence(); } finally { writer.dispose(); } } }
@Override public void prepareWriteSequence(final IIOMetadata streamMetadata) throws IOException { delegate.prepareWriteSequence(streamMetadata); }
File file = new File("gif1.gif"); ImageReader reader = ImageIO.getImageReadersBySuffix("GIF").next(); ImageInputStream in = ImageIO.createImageInputStream(file); reader.setInput(in); int numImages = reader.getNumImages(true); BufferedImage[] frames = new BufferedImage[pocetObrazku]; File fileOut = new File("k.gif"); fileOut.createNewFile(); ImageWriter iw = ImageIO.getImageWritersByFormatName("gif").next(); ImageOutputStream ios = ImageIO.createImageOutputStream(fileOut); iw.setOutput(ios); iw.prepareWriteSequence(null); for (int i = 0; i < numImages ; i++) { BufferedImage image = reader.read(i); frames[i] = reader.read(i); IIOMetadata metadata = reader.getImageMetadata(i); IIOImage ii = new IIOImage(image, null, metadata); iw.writeToSequence(ii, (ImageWriteParam) null); }
public byte[] createImage() throws Exception { ImageWriter iw = ImageIO.getImageWritersByFormatName("gif").next(); ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageOutputStream ios = ImageIO.createImageOutputStream(os); iw.setOutput(ios); iw.prepareWriteSequence(null); int i = 0; for (AnimationFrame animationFrame : frameCollection) { BufferedImage src = animationFrame.getImage(); ImageWriteParam iwp = iw.getDefaultWriteParam(); IIOMetadata metadata = iw.getDefaultImageMetadata( new ImageTypeSpecifier(src), iwp); configure(metadata, "" + animationFrame.getDelay(), i); IIOImage ii = new IIOImage(src, null, metadata); iw.writeToSequence(ii, null); i++; } iw.endWriteSequence(); ios.close(); return os.toByteArray(); }
tiffWriter.prepareWriteSequence(null); // Use default stream metadata
@Override public void write(RenderedImage image, T params) throws TaskIOException { TaskIOException.require(nonNull(getOutput()), "Cannot call write before opening the write destination"); try { if (!prepared) { writer.prepareWriteSequence(null); prepared = true; } writer.writeToSequence(new IIOImage(image, null, newImageMetadata(image, params, imageWriterParams)), imageWriterParams); } catch (IOException e) { throw new TaskIOException(e); } }
void saveAsMultipageTIFF(ArrayList<BufferedImage> bimTab, String filename, int dpi) throws IOException { Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("tiff"); ImageWriter imageWriter = writers.next(); ImageOutputStream ios = ImageIO.createImageOutputStream(new File(filename)); imageWriter.setOutput(ios); imageWriter.prepareWriteSequence(null); for (BufferedImage image : bimTab) { ImageWriteParam param = imageWriter.getDefaultWriteParam(); IIOMetadata metadata = imageWriter.getDefaultImageMetadata(new ImageTypeSpecifier(image), param); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); TIFFUtil.setCompressionType(param, image); TIFFUtil.updateMetadata(metadata, image, dpi); imageWriter.writeToSequence(new IIOImage(image, null, metadata), param); } imageWriter.endWriteSequence(); imageWriter.dispose(); ios.flush(); ios.close(); }
thisImage = thisImage = ... a java.awt.Image from a scanner if(thisImage!=null){ ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageOutputStream ios = ImageIO.createImageOutputStream(baos); boolean foundWriter = false; BufferedImage bimg = new BufferedImage(thisImage.getWidth(null),thisImage.getHeight(null), BufferedImage.TYPE_BYTE_BINARY); bimg.createGraphics().drawImage(thisImage, 0, 0, null); for(Iterator<ImageWriter> writerIter = ImageIO.getImageWritersByFormatName("tif"); writerIter.hasNext() && !foundWriter;) { foundWriter = true; ImageWriter writer = (ImageWriter)writerIter.next(); writer.setOutput(ios); TIFFImageWriteParam writeParam = (TIFFImageWriteParam)writer.getDefaultWriteParam(); writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); writeParam.setCompressionType("CCITT T.6"); writer.prepareWriteSequence(null); ImageTypeSpecifier spec = ImageTypeSpecifier.createFromRenderedImage(bimg); javax.imageio.metadata.IIOMetadata metadata = writer.getDefaultImageMetadata(spec, writeParam); IIOImage iioImage = new IIOImage(bimg, null, metadata); writer.writeToSequence(iioImage, writeParam); bimg.flush(); writer.endWriteSequence(); ios.flush(); writer.dispose(); ios.close(); thisByteArray = baos.toByteArray(); baos.close(); } }
/** * Creates a new GifSequenceWriter * * @param outputStream the ImageOutputStream to be written to * @param imageType one of the imageTypes specified in BufferedImage * @param loopContinuously wether the gif should loop repeatedly * @throws IIOException if no gif ImageWriters are found * * @author Elliot Kroo (elliot[at]kroo[dot]net) */ public GifSequenceWriter( ImageOutputStream outputStream, int imageType, boolean loopContinuously) throws IIOException, IOException { // my method to create a writer gifWriter = getWriter(); imageWriteParam = gifWriter.getDefaultWriteParam(); ImageTypeSpecifier imageTypeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(imageType); imageMetaData = gifWriter.getDefaultImageMetadata(imageTypeSpecifier, imageWriteParam); this.loopContinuously = loopContinuously; gifWriter.setOutput(outputStream); gifWriter.prepareWriteSequence(null); }
writeParam.setTilingMode(ImageWriteParam.MODE_DEFAULT); writer.prepareWriteSequence(reader.getStreamMetadata()); // You want the stream metadata here
public void save(@Nonnull File file) throws IOException { try (OutputStream output = file.newOutputStream()) { ImageOutputStream imageOutput = ImageIO.createImageOutputStream(output); if (imageOutput == null) { throw new IOException("ImageIO::createImageOutputStream returned null"); } ImageWriter writer = ImageIO.getImageWritersByFormatName("gif").next(); int index = 0; writer.setOutput(imageOutput); writer.prepareWriteSequence(null); for (GifFrame frame : this) { BufferedImage image = frame.getImage().getImage(); ImageWriteParam writeParam = writer.getDefaultWriteParam(); IIOMetadata ioMetadata = writer.getDefaultImageMetadata(new ImageTypeSpecifier(image), writeParam); IIOImage ioImage = new IIOImage(image, null, ioMetadata); configureGIFFrame(ioMetadata, String.valueOf(frame.getDelay() / 10L), index++, frame.getDisposalMethod().getMethodName(), frame.getLoopCount()); writer.writeToSequence(ioImage, null); } writer.endWriteSequence(); } }
public void writeImage(RenderedImage image, ImageWriterParams params) throws IOException { if (iiowriter == null) { throw new IllegalStateException("MultiImageWriter already closed!"); } ImageWriteParam iwParam = getDefaultWriteParam(iiowriter, image, params); if (!prepared) { //Only prepare once IIOMetadata streamMetadata = createStreamMetadata(iiowriter, iwParam, params); iiowriter.prepareWriteSequence(streamMetadata); prepared = true; } ImageTypeSpecifier type; if (iwParam.getDestinationType() != null) { type = iwParam.getDestinationType(); } else { type = ImageTypeSpecifier.createFromRenderedImage(image); } //Handle metadata IIOMetadata meta = iiowriter.getDefaultImageMetadata( type, iwParam); //meta might be null for some JAI codecs as they don't support metadata if (params != null && meta != null) { meta = updateMetadata(image, meta, params); } //Write image IIOImage iioimg = new IIOImage(image, null, meta); iiowriter.writeToSequence(iioimg, iwParam); }
private void exportAnimation(String delayTime, File file, ProgressMonitor pm) { ImageWriter imageWriter = ImageIO.getImageWritersByFormatName("gif").next(); try { ImageOutputStream outputStream = ImageIO.createImageOutputStream(file); imageWriter.setOutput(outputStream); imageWriter.prepareWriteSequence(null); pm.beginTask("Exporting time series as animated gif", frames.length); for (int i = 0; i < frames.length; i++) { RenderedImage currentImage = frames[i]; ImageWriteParam writeParameters = imageWriter.getDefaultWriteParam(); IIOMetadata metadata = imageWriter.getDefaultImageMetadata(new ImageTypeSpecifier(currentImage), writeParameters); configure(metadata, delayTime, i); IIOImage image = new IIOImage(currentImage, null, metadata); imageWriter.writeToSequence(image, null); pm.worked(1); } imageWriter.endWriteSequence(); outputStream.close(); pm.done(); } catch (IOException e) { VisatApp.getApp().handleError("Unable to create animated gif", e); } }
gifWriter.prepareWriteSequence(null);
gifWriter.prepareWriteSequence(null); delayedInit = false;