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(); }
SeekableStream s = new FileSeekableStream(inFile); TIFFDecodeParam param = null; ImageDecoder dec = ImageCodec.createImageDecoder("tiff", s, param); RenderedImage op = dec.decodeAsRenderedImage(0); FileOutputStream fos = new FileOutputStream(otPath); JPEGEncodeParam jpgparam = new JPEGEncodeParam(); jpgparam.setQuality(67); ImageEncoder en = ImageCodec.createImageEncoder("jpeg", fos, jpgparam); en.encode(op); fos.flush(); fos.close();
private SeekableStream imageStreamFromFileOrStream() throws IOException { if ( file != null ) { return new FileSeekableStream( file ); } return SeekableStream.wrapInputStream( inputStream, false ); }
@Override public void convert(InputStream input, OutputStream output) throws IOException { TIFFDecodeParam decodeParam = new TIFFDecodeParam(); decodeParam.setDecodePaletteAsShorts(true); decodeParam.setJPEGDecompressYCbCrToRGB(true); ImageDecoder decoder = ImageCodec.createImageDecoder("tiff", input, decodeParam); try { RenderedImage image = decoder.decodeAsRenderedImage(); ImageEncodeParam encodeParam = new PNGEncodeParam.Palette(); ImageEncoder encoder = ImageCodec.createImageEncoder("png", output, encodeParam); encoder.encode(image); input.close(); } finally { IOUtils.closeQuietly(input); } }
TIFFEncodeParam params = new TIFFEncodeParam(); OutputStream out = new FileOutputStream(output_dir + image_name + ".tif"); ImageEncoder encoder = ImageCodec.createImageEncoder("tiff", out, params); Vector vector = new Vector(); for (int i = 0; i < numImages; i++) { vector.add(image[i]); } params.setExtraImages(vector.listIterator(1)); // this may need a check to avoid IndexOutOfBoundsException when vector is empty encoder.encode(image[0]); out.close();
@Override public void encode(Object value, OutputStream outputStream) throws Exception { RenderedImage renderedImage = (RenderedImage) value; ImageEncoder encoder = getEncoder(outputStream); encoder.encode(renderedImage); }
TIFFEncodeParam param = new TIFFEncodeParam(); param.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4); param.setReverseFillOrder(true); param.setLittleEndian(true); param.setWriteTiled(false); param.setTileSize(-1, images[0].getHeight());
static private final BufferedImage openTIFF(final String path) throws Exception { /* final RenderedImage ri = ImageCodec.createImageDecoder("TIFF", new File(path), new TIFFDecodeParam()).decodeAsRenderedImage(); final PlanarImage pi = PlanarImage.wrapRenderedImage(ri); final BufferedImage img = pi.getAsBufferedImage(); */ return PlanarImage.wrapRenderedImage(ImageCodec.createImageDecoder("TIFF", new File(path), new TIFFDecodeParam()).decodeAsRenderedImage()).getAsBufferedImage(); }
import javax.media.jai.PlanarImage; import com.sun.media.jai.codec.ByteArraySeekableStream; import com.sun.media.jai.codec.ImageCodec; import com.sun.media.jai.codec.ImageDecoder; import com.sun.media.jai.codec.SeekableStream; import java.awt.Image; import java.awt.image.RenderedImage; ... static Image load(byte[] data) throws Exception{ Image image = null; SeekableStream stream = new ByteArraySeekableStream(data); String[] names = ImageCodec.getDecoderNames(stream); ImageDecoder dec = ImageCodec.createImageDecoder(names[0], stream, null); RenderedImage im = dec.decodeAsRenderedImage(); image = PlanarImage.wrapRenderedImage(im).getAsBufferedImage(); return image; }
public void storeImage(TiledImage img, String filepath) { TIFFEncodeParam tep = new TIFFEncodeParam(); //important to avoid OutOfMemory tep.setTileSize(256, 256); tep.setWriteTiled(true); //fast compression tep.setCompression(TIFFEncodeParam.COMPRESSION_PACKBITS); //write file JAI.create("filestore", img, filepath, "TIFF", tep); }
try (SeekableStream seekableStream = new FileSeekableStream(filename)){ TIFFDecodeParam param = null; ImageDecoder dec = ImageCodec.createImageDecoder("tiff", seekableStream, param); // convert to buffered image if desired return new RenderedImageAdapter(dec.decodeAsRenderedImage()).getAsBufferedImage(); // convert to buffered image }
TIFFEncodeParam tep = new TIFFEncodeParam(); // Create {X,Y}Resolution fields. TIFFField fieldXRes = new TIFFField(0x11A, TIFFField.TIFF_RATIONAL, 1, new long[][] {{DPI_X, 1}}); TIFFField fieldYRes = new TIFFField(0x11B, TIFFField.TIFF_RATIONAL, 1, new long[][] {{DPI_Y, 1}}); tep.setExtraFields(new TIFFField[] {fieldXRes, fieldYRes});
private long getFieldValue(TIFFField field) { long value; if (field.getType() == TIFFField.TIFF_DOUBLE) { value = (int) field.getAsDouble(0); } else if (field.getType() == TIFFField.TIFF_FLOAT) { value = (int) field.getAsFloat(0); } else if (field.getType() == TIFFField.TIFF_RATIONAL) { long[] values = field.getAsRational(0); value = (int) ((double) values[0] / (double) values[1]); } else if (field.getType() == TIFFField.TIFF_LONG) { value = (int) field.getAsLong(0); } else { value = field.getAsInt(0); } return value; }
import javax.media.jai.*; ... def f = request.getFile('myFile') def okContentTypes = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif'] if (!okContentTypes.contains(f.getContentType())) { // TODO Tell user: "Image type must be one of: ${okContentTypes}" } else { def destination = "D:\\someFolder\\image.jpg"; byte[] source = f.bytes; SeekableStream inputStream = new ByteArraySeekableStream(source); RenderedOp image = JAI.create("stream", inputStream) JAI.create("filestore",image,destination,"JPEG"); // Destination directory must exist (D:\someFolder\) }
public RenderedImageWrapper(RenderedImage image) { this.image = image; Object obj = image.getProperty("tiff_directory"); if (obj != Image.UndefinedProperty) { isTiff = true; directory = (TIFFDirectory) obj; TIFFField[] fields = directory.getFields(); for (int i = 0; i < fields.length; i++) { TIFFField tiffField = fields[i]; fieldMap.put(tiffField.getTag(), tiffField); } } // TiffImage tImage = new TiffImage(); }
/** * 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(); } }
@Override public void encode(Object value, OutputStream outputStream) throws Exception { RenderedImage renderedImage = (RenderedImage) value; ImageEncoder encoder = getEncoder(outputStream); encoder.encode(renderedImage); }
import com.sun.media.jai.codec.FileSeekableStream; import com.sun.media.jai.codec.ImageCodec; import com.sun.media.jai.codec.ImageDecoder; // This function is minimal, you should add exceptions and error handling public RenderedImage read(String filename) FileSeekableStream fss = new FileSeekableStream(filename); ImageDecoder decoder = ImageCodec.createImageDecoder("tiff", fss, null); RenderedImage image = decoder.decodeAsRenderedImage() fss.close(); return image; }
SeekableStream stream = new ByteArraySeekableStream(tileBytes); 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()); buffImage = img.getAsBufferedImage();
SeekableStream stream = new ByteArraySeekableStream(bytes); for (String dn : ImageCodec.getDecoderNames(stream)) { decoderName = dn; break; ImageDecoder decoder = ImageCodec.createImageDecoder(decoderName, stream, null); RenderedImage rimage = decoder.decodeAsRenderedImage();