【问题标题】:Reading pixel aspect ratio of TIF image in Java在Java中读取TIF图像的像素纵横比
【发布时间】:2014-01-17 04:55:21
【问题描述】:
我正在使用 ImageIO 和 JAI 读取和处理 TIF 图像。结果都运行良好,除了一些 TIF 图像没有方形像素。在处理过程中像素的纵横比会丢失,因此生成的图像看起来会被拉伸。
我发现这个问题在 C# 中读出了分辨率:Change tiff pixel aspect ratio to square,但我在 java 中找不到任何等价物。
有谁知道如何在 Java 中读取 BufferedImage 和/或 TIF 图像的水平和垂直分辨率(不是大小),或者让 JAI 在加载图像时对其进行缩放以使生成的像素为正方形?
【问题讨论】:
标签:
java
image-processing
bufferedimage
tiff
jai
【解决方案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);
【解决方案2】:
如果您不想依赖 JAI API(或 TIFF 格式细节),也可以从 Standard Metadata 获取相同的值。
Dimension 元素具有子元素 HorizontalPixelSize 和 VerticalPixelSize,它们应该等同于您从上面的 TIFF 标记中获得的值,以及您可以直接使用的 PixelAspectRatio。