位图报告错误的分辨率?

时间:2016-06-20 11:06:06

标签: c# gdi+

我有一个位图,报告的HorizontalResolutionVerticalResolution属性都是96.但是当我在Gimp中打开相同的图像时,报告的dpi是300x300。

为什么会有区别?

2 个答案:

答案 0 :(得分:0)

Image报告PPI中的解决方案。要转换为DPI(如GIMP所示),请使用以下公式:

var dpiWidth = image.Width * 72 / image.HorizontalResolution;
var dpiHeight = image.Height * 72 / image.VerticalResolution;

答案 1 :(得分:0)

这是从同一个文件中获得不同结果的可能方法:

import scala.collection.mutable.Map

val strings: Map[Int, String] = Map()

strings(1) = "abc1"
strings(2) = "abc2"

现在 Bitmap bmp1 = (Bitmap)Bitmap.FromFile(some300dpiImage); Bitmap bmp2 = new Bitmap(bm1); 将按预期报告300dpi(或准确地说:ppi)。

但是bmp1是一个新的位图,使用相同的像素创建但具有当前的屏幕分辨率,它将报告您的计算机的屏幕分辨率。我的是120dpi / ppi。

注意:这与dpi vs ppi无关 - 对于discussion about dpi - ppi see here

TLTR:严格意义上的dpi 打印硬件相关。除了ppi之外,图像软件没有理由报告任何内容。但是ppi几乎总是被称为dpi,所以我们可以像调用像素点那样做,反之亦然。