繁体   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