Search in sources :

Example 1 with ImageWriter

use of org.apache.batik.ext.awt.image.spi.ImageWriter in project quick-media by liuyueyi.

the class PNGTranscoderImageIOWriteAdapter method writeImage.

/**
 * @throws TranscoderException
 * @see org.apache.batik.transcoder.image.PNGTranscoder.WriteAdapter#writeImage(org.apache.batik.transcoder.image.PNGTranscoder, java.awt.image.BufferedImage, org.apache.batik.transcoder.TranscoderOutput)
 */
public void writeImage(PNGTranscoder transcoder, BufferedImage img, TranscoderOutput output) throws TranscoderException {
    TranscodingHints hints = transcoder.getTranscodingHints();
    int n = -1;
    if (hints.containsKey(PNGTranscoder.KEY_INDEXED)) {
        n = ((Integer) hints.get(PNGTranscoder.KEY_INDEXED)).intValue();
        if (n == 1 || n == 2 || n == 4 || n == 8)
            // PNGEncodeParam.Palette can handle these numbers only.
            img = IndexImage.getIndexedImage(img, 1 << n);
    }
    ImageWriter writer = ImageWriterRegistry.getInstance().getWriterFor("image/png");
    ImageWriterParams params = new ImageWriterParams();
    /* NYI!!!!!
        PNGEncodeParam params = PNGEncodeParam.getDefaultEncodeParam(img);
        if (params instanceof PNGEncodeParam.RGB) {
            ((PNGEncodeParam.RGB)params).setBackgroundRGB
                (new int [] { 255, 255, 255 });
        }*/
    // If they specify GAMMA key with a value of '0' then omit
    // gamma chunk.  If they do not provide a GAMMA then just
    // generate an sRGB chunk. Otherwise supress the sRGB chunk
    // and just generate gamma and chroma chunks.
    /* NYI!!!!!!
        if (hints.containsKey(PNGTranscoder.KEY_GAMMA)) {
            float gamma = ((Float)hints.get(PNGTranscoder.KEY_GAMMA)).floatValue();
            if (gamma > 0) {
                params.setGamma(gamma);
            }
            params.setChromaticity(PNGTranscoder.DEFAULT_CHROMA);
        }  else {
            // We generally want an sRGB chunk and our encoding intent
            // is perceptual
            params.setSRGBIntent(PNGEncodeParam.INTENT_PERCEPTUAL);
        }*/
    float PixSzMM = transcoder.getUserAgent().getPixelUnitToMillimeter();
    int PixSzInch = (int) (25.4 / PixSzMM + 0.5);
    params.setResolution(PixSzInch);
    try {
        OutputStream ostream = output.getOutputStream();
        writer.writeImage(img, ostream, params);
        ostream.flush();
    } catch (IOException ex) {
        throw new TranscoderException(ex);
    }
}
Also used : TranscodingHints(org.apache.batik.transcoder.TranscodingHints) ImageWriterParams(org.apache.batik.ext.awt.image.spi.ImageWriterParams) TranscoderException(org.apache.batik.transcoder.TranscoderException) OutputStream(java.io.OutputStream) ImageWriter(org.apache.batik.ext.awt.image.spi.ImageWriter) IOException(java.io.IOException)

Example 2 with ImageWriter

use of org.apache.batik.ext.awt.image.spi.ImageWriter in project quick-media by liuyueyi.

the class TIFFTranscoderImageIOWriteAdapter method writeImage.

/**
 * @throws TranscoderException
 * @see org.apache.batik.transcoder.image.TIFFTranscoder.WriteAdapter#writeImage(TIFFTranscoder, java.awt.image.BufferedImage, org.apache.batik.transcoder.TranscoderOutput)
 */
public void writeImage(TIFFTranscoder transcoder, BufferedImage img, TranscoderOutput output) throws TranscoderException {
    TranscodingHints hints = transcoder.getTranscodingHints();
    ImageWriter writer = ImageWriterRegistry.getInstance().getWriterFor("image/tiff");
    ImageWriterParams params = new ImageWriterParams();
    float PixSzMM = transcoder.getUserAgent().getPixelUnitToMillimeter();
    int PixSzInch = (int) (25.4 / PixSzMM + 0.5);
    params.setResolution(PixSzInch);
    if (hints.containsKey(TIFFTranscoder.KEY_COMPRESSION_METHOD)) {
        String method = (String) hints.get(TIFFTranscoder.KEY_COMPRESSION_METHOD);
        // Values set here as defined in TIFFImageWriteParam of JAI Image I/O Tools
        if ("packbits".equals(method)) {
            params.setCompressionMethod("PackBits");
        } else if ("deflate".equals(method)) {
            params.setCompressionMethod("Deflate");
        } else if ("lzw".equals(method)) {
            params.setCompressionMethod("LZW");
        } else if ("jpeg".equals(method)) {
            params.setCompressionMethod("JPEG");
        } else {
        // nop
        }
    }
    try {
        OutputStream ostream = output.getOutputStream();
        int w = img.getWidth();
        int h = img.getHeight();
        SinglePixelPackedSampleModel sppsm;
        sppsm = (SinglePixelPackedSampleModel) img.getSampleModel();
        int bands = sppsm.getNumBands();
        int[] off = new int[bands];
        for (int i = 0; i < bands; i++) off[i] = i;
        SampleModel sm = new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE, w, h, bands, w * bands, off);
        RenderedImage rimg = new FormatRed(GraphicsUtil.wrap(img), sm);
        writer.writeImage(rimg, ostream, params);
        ostream.flush();
    } catch (IOException ex) {
        throw new TranscoderException(ex);
    }
}
Also used : PixelInterleavedSampleModel(java.awt.image.PixelInterleavedSampleModel) OutputStream(java.io.OutputStream) ImageWriter(org.apache.batik.ext.awt.image.spi.ImageWriter) SinglePixelPackedSampleModel(java.awt.image.SinglePixelPackedSampleModel) IOException(java.io.IOException) PixelInterleavedSampleModel(java.awt.image.PixelInterleavedSampleModel) SampleModel(java.awt.image.SampleModel) SinglePixelPackedSampleModel(java.awt.image.SinglePixelPackedSampleModel) TranscodingHints(org.apache.batik.transcoder.TranscodingHints) ImageWriterParams(org.apache.batik.ext.awt.image.spi.ImageWriterParams) FormatRed(org.apache.batik.ext.awt.image.rendered.FormatRed) TranscoderException(org.apache.batik.transcoder.TranscoderException) RenderedImage(java.awt.image.RenderedImage)

Aggregations

IOException (java.io.IOException)2 OutputStream (java.io.OutputStream)2 ImageWriter (org.apache.batik.ext.awt.image.spi.ImageWriter)2 ImageWriterParams (org.apache.batik.ext.awt.image.spi.ImageWriterParams)2 TranscoderException (org.apache.batik.transcoder.TranscoderException)2 TranscodingHints (org.apache.batik.transcoder.TranscodingHints)2 PixelInterleavedSampleModel (java.awt.image.PixelInterleavedSampleModel)1 RenderedImage (java.awt.image.RenderedImage)1 SampleModel (java.awt.image.SampleModel)1 SinglePixelPackedSampleModel (java.awt.image.SinglePixelPackedSampleModel)1 FormatRed (org.apache.batik.ext.awt.image.rendered.FormatRed)1