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