我有TIFF
图片,我正在使用Windows
。当我右键单击并转到Properties
时,我会看到Width = 1728 pixels
和Height
= 1146 pixels
。当我将Java
作为BufferedImage
阅读并致电getWidth()
和getHeight()
时,我会看到同样的事情。当我用MS Paint
打开它时,我看到相同的大小。
但问题是这个尺寸不正确,因为高度太小而且图像看起来愚蠢。现在有趣的是:当我用IrfanView
打开它时,我看到它正常,Height = 2292 pixels
。当我使用Windows Photo Viewer
打开它时,Height = 2292 pixels
看起来没问题。
所以我的问题是:IrfanView
和Windows Photo Viewer
如何设法识别正确的高度,尽管在图像的元数据中指定了错误?如何在Java中做同样的事情?我不想向用户展示愚蠢的形象。
P.S图像来自外部,我对错误的元数据无能为力......
答案 0 :(得分:2)
我解决了这个问题。事实上,图像从一开始就不合适。 IrfanView
显示正常的原因是,它会比较Horizontal
和Vertical
DPI
,如果它们不相等,则会调整图像大小以使它们相等。
例如:
HorizontalDPI = 200
VerticalDPI = 100
Width = 800
Height = 600
当IrfanView打开图像时,它会生成以下内容:
Height = Height * (HorizontalDPI / VerticalDPI) = 600 * 2 = 1200
。
我最终在我的软件中做了同样的事情。一切都很好:)
我希望这篇文章对其他人有用:)