簡體   English   中英

使用 C# 讀取時圖像寬度和高度錯誤

[英]Wrong image width and height when read it with C#

我有一個奇怪的問題。 有一個圖像 不幸的是,它太大了,無法顯示它。 但是你可以下載它。 如果您不能從 OneDrive 做到這一點,是另一種方法。

這個形象看似普通,實則不然。

當我們打開屬性時,我們將看到:

Windows 中的圖像屬性

我們需要記住這張圖片的尺寸:寬度是 3000px,高度是 4000px。 它看起來是正確的,因為圖像是 portret。

然后讓我們嘗試用 C# 讀取它:

private static void TestImage()
{
    using (FileStream file1 = new FileStream("DSC_2446.JPG", FileMode.Open))
    {                
        Console.WriteLine("DSC_2446.JPG :");
        using (var img1 = System.Drawing.Image.FromStream(file1))
        {
            Console.WriteLine($" Width = {img1.Width}");
            Console.WriteLine($" Height = {img1.Height}");
        } 
    }                

    Console.Read();
}

結果我們看到了一些神奇的東西!!!

神奇的結果

所以我的價值觀完全錯誤。 值在屬性之間切換。 有人知道為什么會發生這種情況以及如何檢測/修復這種行為嗎?

問題是EXIF版本。 您可以使用此站點獲取真實數據https://exif.tools/meta/Exif-Version/0231您將看到

在此處輸入圖像描述

另外根據這篇文章,您可以通過以下方式獲取圖片的方向

var orientation = (int)img1.GetPropertyItem(274).Value[0];
//orientation = 6

6表示旋轉 90 度。

有值6的參考。https://exiftool.org/TagNames/EXIF.html

在此處輸入圖像描述

暫無
暫無

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

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