簡體   English   中英

讀取Java中TIF圖像的像素長寬比

[英]Reading pixel aspect ratio of TIF image in Java

我正在閱讀並使用ImageIO和JAI處理TIF圖像。 除了許多TIF圖像沒有方形像素外,結果都完美無缺。 在處理期間像素的縱橫比正在丟失,因此得到的圖像看起來被拉伸。

我發現這個問題在C#中讀出分辨率:將tiff像素長寬比改為平方但我在java中找不到任何等價物。

有沒有人知道如何在Java中讀取BufferedImage和/或TIF圖像的水平和垂直分辨率(不是大小),或者在加載圖像時使JAI縮放圖像以使得結果像素是方形的?

經過一個小時的谷歌搜索和嘗試,我認為我找到了解決方案。

    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);

作為替代方案,如果您不想依賴JAI API(或者根本不依賴於TIFF格式),您也可以從標准元數據中獲取相同的值。

Dimension元素具有子元素HorizontalPixelSizeVerticalPixelSize ,它們應該等同於您從上面的TIFF標記獲得的值,以及您可以直接使用的PixelAspectRatio

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM