我遇到了一个奇怪的问题。有一个image 。不幸的是它太大了,无法显示它。但你可以下载它。如果您无法从 OneDrive 执行此操作 this是另一种方式。
这张图片看似普通,其实不然。
当我们打开属性时,我们将看到:
我们需要记住这张图片的尺寸:宽度为 3000 像素,高度为 4000 像素。它看起来是正确的,因为图像是 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();
}
在结果中我们看到了一些魔法!!!
所以我的值(value)观完全错误。值在属性之间切换。 有人知道为什么会发生这种情况以及如何检测/修复这种行为吗?
最佳答案
问题出在 EXIF
版本上。您可以通过本站获取真实数据https://exif.tools/meta/Exif-Version/0231你会看到
也按照这个Post您可以通过以下方式获取图像的方向
var orientation = (int)img1.GetPropertyItem(274).Value[0];
//orientation = 6
值6
表示旋转90度。
关于c# - 用C#读取图像宽度和高度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74948926/