【问题标题】: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 元素具有子元素 HorizontalPixelSizeVerticalPixelSize,它们应该等同于您从上面的 TIFF 标记中获得的值,以及您可以直接使用的 PixelAspectRatio

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-25
        • 2019-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多