TIFF高度错误



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

我有一个TIFF图像,我使用Windows。当我右键单击并进入Properties时,我看到Width = 1728 pixelsHeight = 1146 pixels。当我阅读Java作为BufferedImage并调用getWidth()getHeight()时,我看到了同样的事情。当我用MS Paint打开它时,我看到相同的大小。

但问题是,这个尺寸是不正确的,因为高度太小,图像看起来白痴。现在有趣的部分:当我用IrfanView打开它时,我看到它OK,用Height = 2292 pixels。当我用Windows Photo Viewer打开它时,Height = 2292 pixels看起来很好。

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

p。S图像来自外部,我无法对错误的元数据做任何事情…

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

例如:

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

当IrfanView打开图像时,它会做以下操作:

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

我最终在我的软件中做了同样的事情。一切正常:)

希望这篇文章能对大家有所帮助。

最新更新