我需要将彩色图像转换为双色版本

Joc*_*che 2 java tiff image image-processing

在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();
Run Code Online (Sandbox Code Playgroud)

ami*_*ckj 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);
Run Code Online (Sandbox Code Playgroud)