如何获得图像的分辨率?(JPEG,GIF,PNG,JPG)

6 .net c# image c#-3.0

我找到了这个方法:

Graphics g = e.Graphics;
Bitmap bmp = new Bitmap("winter.jpg");
g.DrawImage(bmp, 0, 0);
Console.WriteLine("Screen resolution: " + g.DpiX + "DPI");
Console.WriteLine("Image resolution: " + bmp.HorizontalResolution + "DPI");
Console.WriteLine("Image Width: " + bmp.Width);
Console.WriteLine("Image Height: " + bmp.Height);

SizeF s = new SizeF(bmp.Width * (g.DpiX / bmp.HorizontalResolution),
                    bmp.Height * (g.DpiY / bmp.VerticalResolution));

Console.WriteLine("Display size of image: " + s);
Run Code Online (Sandbox Code Playgroud)

但我真的不明白如何获取我正在寻找的东西.我对DPI不感兴趣,我只需要1024x768,1200x1024等数字.另外,每次我想要找到图像的分辨率时,我是否必须创建一个新的图像对象?

我正在创建一个应用程序,列出给定文件夹中的当前图像,所以任何帮助将不胜感激.:)

Rom*_*kov 13

"1024x768"在计算机显示设置的上下文中仅被称为"分辨率",即便如此,这也是一个令人遗憾的误称.在成像中,"1024x768"只是图像的宽度和高度,正如其他人所提到的,您已经显示了检索这些数字的代码.略微调整:

var img = Image.FromFile(@"C:\image.jpg");
Console.WriteLine(img.Width + "x" + img.Height); // prints "1024x768" (etc)
Run Code Online (Sandbox Code Playgroud)

获取你所追求的数字的唯一内置方法是创建一个新实例(事实上,解码整个图像) - 如果你只需要检索几百个这样的数字,这将是非常低效的图片.避免这很难; 这是一个起点:如何在不加载图像的情况下可靠地获取.NET中的图像尺寸?


当您谈到"分辨率"时,通常指的是每英寸的点数或像素数.该Bitmap班将其存储在HorizontalResolution/ VerticalResolution性能,而在图形类DpiX/ DpiY.

这个计算:

bmp.Width * (g.DpiX / bmp.HorizontalResolution)
Run Code Online (Sandbox Code Playgroud)

可以重新排列,以便清楚如下:

(bmp.Width / bmp.HorizontalResolution) * g.DpiX
Run Code Online (Sandbox Code Playgroud)

括号部分以英寸计算图像宽度.g.DpiX然后乘以,可以得到Graphics对象中与图像具有相同宽度(以英寸为单位)的像素数bmp.