繁体   English   中英

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

[英]How can I get the resolution of an image? (JPEG, GIF, PNG, JPG)

我找到了这个方法:

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);

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

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

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

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

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


当您谈到“分辨率”时,通常指的是每英寸点数或像素数 Bitmap类将其存储在HorizontalResolution / VerticalResolution属性中,而Graphics类存储在DpiX / DpiY

这个计算:

bmp.Width * (g.DpiX / bmp.HorizontalResolution)

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

(bmp.Width / bmp.HorizontalResolution) * g.DpiX

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

要获得大小:

string path = @"C:\winter.jpg";
Image img = Image.FromFile(path);
Console.WriteLine("Image Width: " + img.Width); //equals img.Size.Width
Console.WriteLine("Image Height: " + img.Height); //equals img.Size.Height

是System.Drawing.Image属性完整列表 ,如果要显示其他属性的话。

我不确定整个目录是否有更快的方法,Windows Vista / 7可能有更新的API包含此信息,但是没有遇到过它。

当然你已经回答了自己的问题,就像这样简单:

Bitmap bmp = new Bitmap(@"winter.bmp");     
Console.WriteLine("Image Width: " + bmp.Width);
Console.WriteLine("Image Height: " + bmp.Height);

只有在显示或打印图像时,DPI信息才真正有用。 在示例代码中,它将图像转换为可用于将其绘制到屏幕的Graphics对象。

要回答问题的第二部分,您可以解析JPEG文件标题以查找宽度/高度信息,而无需在图像中实际加载。 但要做到这一点,您需要知道JPEG文件的标题信息和文件格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM