[英]Wrong image width and height when read it with C#
我有一個奇怪的問題。 有一個圖像。 不幸的是,它太大了,無法顯示它。 但是你可以下載它。 如果您不能從 OneDrive 做到這一點,這是另一種方法。
這個形象看似普通,實則不然。
當我們打開屬性時,我們將看到:
我們需要記住這張圖片的尺寸:寬度是 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 度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.