我正在阅读并使用ImageIO和JAI处理TIF图像。除了许多TIF图像没有方形像素外,结果都完美无缺。在处理过程中像素的纵横比正在丢失,因此得到的图像看起来很拉伸。
我发现这个问题在C#中读出了解决方案:Change tiff pixel aspect ratio to square但我在java中找不到任何等价物。
有没有人知道如何在Java中读取BufferedImage和/或TIF图像的水平和垂直分辨率(不是大小),或者让JAI在加载图像时缩放图像以使得结果像素是方形的?
答案 0 :(得分:1)
经过一个小时的谷歌搜索和尝试后,我认为我找到了解决方案。
IIOMetadata iiom = ir.getImageMetadata(i);
TIFFDirectory dir = TIFFDirectory.createFromMetadata(iiom);
TIFFField fieldXRes = dir.getTIFFField(BaselineTIFFTagSet.TAG_X_RESOLUTION);
TIFFField fieldYRes = dir.getTIFFField(BaselineTIFFTagSet.TAG_Y_RESOLUTION);
int xRes = fieldXRes.getAsInt(0);
int yRes = fieldYRes.getAsInt(0);
答案 1 :(得分:1)
作为替代方案,如果您不想依赖JAI API(或根本不依赖于TIFF格式),您也可以从Standard Metadata获取相同的值。
Dimension
元素包含子元素HorizontalPixelSize
和VerticalPixelSize
,它们应该等同于您从上面的TIFF标记获得的值,以及PixelAspectRatio
你可以直接使用。