使用C#和.NET Environment获得jpeg图像的分辨率?

时间:2020-03-06 14:37:38  来源:igfitidea点击:

我们的客户将上载要打印在其文档上的图像,并且我们被要求提出一种获取图像分辨率的方法,以便警告他们图像是否分辨率太低并且在图像中看起来呈像素化最终产品

如果涉及到这一点,如果有人知道如何获得尺寸,我们也可以选择尺寸,但分辨率是首选

谢谢

解决方案

System.Drawing.Image

Image newImage = Image.FromFile("SampImag.jpg");
newImage.HorizontalResolution

Image image = Image.FromFile( [file] );
GraphicsUnit unit = GraphicsUnit.Point;
RectangleF rect = image.GetBounds( ref unit );
float hres = image.HorizontalResolution;
float vres = image.VerticalResolution;

这取决于我们要寻找的内容...如果我们需要图像的DPI,则需要寻找Horizo​​ntalResolution,即图像的DPI。

Image i = Image.FromFile(@"fileName.jpg");
i.HorizontalResolution;

如果要计算图像的大小,则需要计算图像的尺寸,即:

int docHeight = (i.Height / i.VerticalResolution);
int docWidth = (i.Width / i.HorizontalResolution);

这将为我们提供文档的高度和宽度(以英寸为单位),然后可以将其与所需的最小尺寸进行比较。

仅在打印时,DPI才有意义。 Mac标准是72dpi,而Windows标准是96dpi。屏幕分辨率仅考虑像素,因此72dpi 800x600 jpeg与96dpi 800x600像素具有相同的屏幕分辨率。

回到80年代,Mac使用72dpi的屏幕/打印分辨率来适应屏幕/打印尺寸,因此当我们以1:1的比例在屏幕上显示图像时,它对应于打印机上的相同尺寸。 Windows将屏幕分辨率提高到96dpi,以获得更好的字体显示。但是,结果是,屏幕图像不再适合打印的尺寸。

因此,对于Web项目,如果图像不用于打印,请不要理会DPI。 72dpi,96dpi,甚至1200dpi也应显示相同的图像。