如何从文件名中获取图像尺寸

use*_*417 54 c# image dimensions

我有一个名为FPN ="c:\ ggs\ggs Access\images\members\1.jpg"的文件

我正在尝试获取图像1.jpg的尺寸,并且我想在加载之前检查图像尺寸是否有效,并且如果图像的宽度或高度小于或等于零,则弹出像"图像格式不正确"这样的消息

有人可以帮我吗?

Joh*_*n T 115

System.Drawing.Image img = System.Drawing.Image.FromFile(@"c:\ggs\ggs Access\images\members\1.jpg");
MessageBox.Show("Width: " + img.Width + ", Height: " + img.Height);
Run Code Online (Sandbox Code Playgroud)

  • 它抛出了一个令人失忆的说法 (4认同)
  • @user682417 考虑`Image.FromStream`,这样你就可以避免将整个文件加载到内存中(而且速度更快)——请参阅 https://www.roelvanlisdonk.nl/2012/02/28/fastest-way-to-read-dimensions -from-a-picture-image-file-in-c/ (3认同)
  • 对于 .net core nuget System.Drawing.Common 回复:https://www.hanselman.com/blog/HowDoYouUseSystemDrawingInNETCore.aspx (2认同)

Ato*_*osk 33

Wpf类System.Windows.Media.Imaging.BitmapDecoder不读取整个文件,只读取元数据.

using(var imageStream = File.OpenRead("file"))
{
    var decoder = BitmapDecoder.Create(imageStream, BitmapCreateOptions.IgnoreColorProfile,
        BitmapCacheOption.Default);
    var height = decoder.Frames[0].PixelHeight;
    var width = decoder.Frames[0].PixelWidth;
}
Run Code Online (Sandbox Code Playgroud)