Java ImageIO类绘图图像并另存为TIFF

时间:2019-01-23 19:12:59

标签: java javax.imageio

Windows 7(32位)上的Java 1.8_201 下面是我的代码。由于TIFF不是受支持的格式,因此无法附加图像。 我不明白为什么我创建的TIFF图像会颠倒颜色。 JPEG图像似乎还可以。 根据Windows Photo Viewer,图像具有以下属性:

back.tif

宽度= 1337像素

高度= 712像素

水平分辨率= 200 dpi

垂直分辨率= 200 dpi

位深度= 1

压缩= CCITT T.6

类似于文件front.tif

both.tif

宽度= 1340像素

高度= 1425像素

水平分辨率= 1 dpi

垂直分辨率1 dpi

位深度= 1

压缩=未压缩

back2.jpg

宽度= 1337像素

高度= 712像素

水平分辨率= 200 dpi

垂直分辨率= 200 dpi

位深度= 8

(未显示压缩详细信息)

both2.jpg

宽度= 1340像素

高度= 1425像素

水平分辨率= 96 dpi

垂直分辨率= 96 dpi

位深度= 8

(未显示压缩详细信息)

我的代码:

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class TwoImage {
    public static void main(String[] args) {
//        File back = new File("C:\\temp\\back2.jpg");
        File front = new File("C:\\temp\\front.tif"); // width = 1340 , height = 713
//        File front = new File("C:\\temp\\front2.jpg");
        File back = new File("C:\\temp\\back.tif"); // width = 1337 , height = 712
        try {
            BufferedImage bImg = ImageIO.read(back);
            BufferedImage fImg = ImageIO.read(front);
            BufferedImage img2 = new BufferedImage(1340,
                                                   1425,
//                                                   BufferedImage.TYPE_BYTE_GRAY);
                                                   BufferedImage.TYPE_BYTE_BINARY);
            Graphics2D g2D = img2.createGraphics();
            g2D.drawImage(fImg, 0, 0, null);
            g2D.drawImage(bImg, 0, 713, null);
            g2D.dispose();
//            File output = new File("C:\\temp\\both2.jpg");
            File output = new File("C:\\temp\\both.tif");
//            ImageIO.write(img2, "JPEG", output);
            ImageIO.write(img2, "TIFF", output);
        }
        catch (Exception x) {
            x.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我编写了一个测试程序,该程序加载一张TIFF图像并将其显示为JLabel上的图标,并以相反的颜色显示。因此,我认为JDK 1.8.0_201附带的默认TIFF图像阅读器在这里不合适。因此,我猜想可能需要通过类'javax.imageio.plugins.tiff.TIFFImageReadParam'更改默认设置。但是后来我发现TwelveMonkeys,它的默认TIFF图像阅读器正确地处理了我的TIFF图像,这就是我解决问题的方式。