2

在 java 中,我需要将 jpeg、gif 或 png 格式的传入文件转换为双层版本,以便进一步转换为 CCIT 压缩的 TIF 文件。我可以取出 tif 文件,但不能压缩。我真的不是 JAI、压缩或图像格式方面的专家。任何帮助深表感谢。(我已经在这个主题上搜索了几个小时,但找不到我理解的例子。)

    String inFile = "myFile.jpg"
    String newFileName = "myFile.tif"; 
    FileOutputStream out = new FileOutputStream(newFileName);

    RenderedOp src = JAI.create("fileload", inFile);

    // TIFFEncodeParam params = new TIFFEncodeParam();
    // params.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4);

    TIFFImageEncoder encoder = new TIFFImageEncoder (out, null);
    encoder.encode (src);
    out.flush();
    out.close();
4

1 回答 1

5

您必须将图像转换为双级压缩格式,以便能够使用 COMPRESSION_GROUP4 写入 Tiff 图像。最简单的方法可能是使用 BufferedImage 以兼容的压缩方案呈现图像。

        FileOutputStream fos = new FileOutputStream("C:/test/output/myFile.tif"); 

        RenderedOp src = JAI.create("fileload", "C:/test/input/myFile.jpg");

        BufferedImage buf = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_BINARY);
        buf.getGraphics().drawImage(src.getAsBufferedImage(), 0, 0, null);
        RenderedImage ri = (RenderedImage) buf;

        encodeParam = new TIFFEncodeParam ();
        encodeParam.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4);

        ImageEncoder enc = ImageCodec.createImageEncoder("TIFF", fos, encodeParam);
        enc.encode(ri);

于 2013-04-24T14:13:38.633 回答