.net - Bitmap.Height和VerticalResolution之间的区别

标签 .net image resolution pixels

C#中b.Height和b.Width属性与b.Horizo​​ntalResolution和b.VerticalResolution之间有什么区别?

Bitmap b = new Bitmap(@"foo.bmp");

对于我的样本,高度= 65,宽度= 375,水平分辨率=垂直分辨率= 150.01239
MSDN表示高度和宽度以像素为单位,但是Horizo​​ntalResolution和VerticalResolution是每英寸像素。那么,这是否意味着例如从扫描仪扫描该图像的dpi?还是这其他?

问题的内容如下:我想扫描一个签名,并在asp.net页面上以表格形式显示在其中。该表格是标准的政府表格,具有明确定义的空间。扫描图像时应考虑哪些注意事项,以便在浏览器中以及打印网页时显示图像时不会出现任何模糊感。

我不明白的是,如果所有图像格式都存储(a)浏览器将在图像标签中显示/调整大小的图像的像素大小(高度/宽度),以及(b)打印机将使用的其他等效dpi打印?如果不是,是什么决定了打印纸上的图像尺寸?

最佳答案

当您要确保图像在输出设备上以与创建时相同的物理尺寸显示时,每英寸点数属性非常重要。最好的例子是您使用Microsoft Paint创建的图像。在使用它时,您将使用显示器。通常具有每英寸96像素的分辨率。因此,960 x 960的图像将在显示器上显示为(大约)10 x 10英寸的图像。

现在打印。打印机是高分辨率设备,每英寸600点是很正常的。这意味着您的960 x 960像素的图像将作为960/600 = 1.6 x 1.6英寸的图像打印在纸上。您的精美设计变成了邮票。

显然这是不希望的,需要重新缩放图像以使其在纸上看起来与在显示器上相似。图像的每英寸点数属性使您可以执行此操作。 Image.Horizo​​ntal/VerticalResolution属性告诉您96,打印机的Graphics.DpiX/Y告诉您600,您知道必须重新缩放600/96才能获得相同大小的图像。

请注意,这有副作用。由于重新缩放,您在Microsoft Paint中绘制的每个像素都会变成纸上6 x 6的 Blob 。纸张上的像素很小,因此图像看起来可能相同。只要图像具有平滑的过渡效果,如照片。文字(尤其是抗锯齿文字)效果不佳。否则,这就是为什么与为打印机生成的报告相比,屏幕截图看起来如此糟糕的原因。

关于.net - Bitmap.Height和VerticalResolution之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6221359/

相关文章:

c# - 引用对象的地址在立即窗口中有效,但在编译代码中无效

html - 鼠标悬停时更改图像

java - ImageIcon 不渲染动画

android - 使用 Universal Image Loader 在 Android GridView 中滚动时重复图像

android - Qt 安卓。获取设备屏幕分辨率

c# - 关于返回的问题?

c# - 什么停止(而不是崩溃)我的 Windows 服务?

.net - .NET Regex 类的运算符优先级在哪里记录?

gpu - 在 GPU 上绘制与分辨率无关的三次贝塞尔曲线 (Blinn/Loop)

iphone - 最大宽度对 iPhone 没有影响