TIFF错误的高度

时间:2011-09-08 12:36:29

标签: java tiff

好吧,我同意这是一个奇怪的问题,但请耐心等待。

我有TIFF图片,我正在使用Windows。当我右键单击并转到Properties时,我会看到Width = 1728 pixelsHeight = 1146 pixels。当我将Java作为BufferedImage阅读并致电getWidth()getHeight()时,我会看到同样的事情。当我用MS Paint打开它时,我看到相同的大小。

但问题是这个尺寸不正确,因为高度太小而且图像看起来愚蠢。现在有趣的是:当我用IrfanView打开它时,我看到它正常,Height = 2292 pixels。当我使用Windows Photo Viewer打开它时,Height = 2292 pixels看起来没问题。

所以我的问题是:IrfanViewWindows Photo Viewer如何设法识别正确的高度,尽管在图像的元数据中指定了错误?如何在Java中做同样的事情?我不想向用户展示愚蠢的形象。

P.S图像来自外部,我对错误的元数据无能为力......

1 个答案:

答案 0 :(得分:2)

我解决了这个问题。事实上,图像从一开始就不合适。 IrfanView显示正常的原因是,它会比较HorizontalVertical DPI,如果它们不相等,则会调整图像大小以使它们相等。

例如:

HorizontalDPI = 200
VerticalDPI = 100
Width = 800
Height = 600

当IrfanView打开图像时,它会生成以下内容:

Height = Height * (HorizontalDPI / VerticalDPI) = 600 * 2 = 1200

我最终在我的软件中做了同样的事情。一切都很好:)

我希望这篇文章对其他人有用:)