好吧,我同意这是一个奇怪的问题,但是请耐心听我说。
我有一个TIFF
图像,我使用Windows
。当我右键单击并进入Properties
时,我看到Width = 1728 pixels
和Height
= 1146 pixels
。当我阅读Java
作为BufferedImage
并调用getWidth()
和getHeight()
时,我看到了同样的事情。当我用MS Paint
打开它时,我看到相同的大小。
但问题是,这个尺寸是不正确的,因为高度太小,图像看起来白痴。现在有趣的部分:当我用IrfanView
打开它时,我看到它OK,用Height = 2292 pixels
。当我用Windows Photo Viewer
打开它时,Height = 2292 pixels
看起来很好。
所以我的问题是:IrfanView
和Windows Photo Viewer
如何设法识别正确的高度,尽管在图像的元数据中指定了错误的高度?如何在Java中做到这一点呢?我不想向用户展示一个愚蠢的图像。
p。S图像来自外部,我无法对错误的元数据做任何事情…
我解决了问题。事实上,这个形象从一开始就不合适。IrfanView
显示OK的原因是它比较了Horizontal
和Vertical
DPI
,如果它们不相等,它会调整图像的大小使它们相等。
HorizontalDPI = 200
VerticalDPI = 100
Width = 800
Height = 600
当IrfanView打开图像时,它会做以下操作:
Height = Height * (HorizontalDPI / VerticalDPI) = 600 * 2 = 1200
。
我最终在我的软件中做了同样的事情。一切正常:)
希望这篇文章能对大家有所帮助。