[英]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.