[英]How can I convert a JPEG image to a PNG one with transparent background?
[英]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.