.net Image.HorizontalResolution和Image.VerticalResolution-为什么浮动?

.net Image.HorizontalResolution和Image.VerticalResolution-为什么浮动?,.net,image,image-processing,.net,Image,Image Processing,这部分是出于好奇,部分是为了证明如何在SQL Server数据库中存储的决策是正确的: 为什么Image.HorizontalResolution和Image.VerticalResolution具有浮点数类型?无穷大和NaN是如何发挥作用的 参考资料:一开始我很困惑,因为在图像的上下文中分辨率有多种含义 当我们谈论像素尺寸的分辨率时,数字总是整数。例如,这台电视机的分辨率为1920×1080 当我们用每英寸/米的像素数来谈论分辨率时,这个数字不需要是一个整洁的整数。我们可以有300 DPI、3

这部分是出于好奇,部分是为了证明如何在SQL Server数据库中存储的决策是正确的:

为什么Image.HorizontalResolution和Image.VerticalResolution具有浮点数类型?无穷大和NaN是如何发挥作用的


参考资料:

一开始我很困惑,因为在图像的上下文中分辨率有多种含义

当我们谈论像素尺寸的分辨率时,数字总是整数。例如,这台电视机的分辨率为1920×1080

当我们用每英寸/米的像素数来谈论分辨率时,这个数字不需要是一个整洁的整数。我们可以有300 DPI、300.5 DPI、314.159 DPI等值


答:在API field Image.HorizontalResolution的上下文中,我们讨论的是物理分辨率,这就是为什么它是一个浮点数而不是一个整数更有意义的原因。

这个问题有点实际的答案是它是一个浮点数,因为美国不使用公制,它以英寸为单位。世界上其他地方都使用电表。一米有25.4英寸并不能产生好的整数。图像文件格式使用不同的标准,具有讽刺意味的是,使用米而不是英寸的最常见的图像格式是由一家美国公司创建的。BMP文件格式使用每米像素数

技术上更正确的答案可能是,分辨率是用于创建图像的图像传感器的设计参数。物理特性,如CCD传感器中的单元间距。并受到用于将场景投影到传感器上的镜头的影响。传感器和透镜都不一定具有每英寸可等分的数字。或者每米。芯片烘焙工厂使用以米为单位的特征尺寸。嗯,纳米。镜头的焦距通常是可调的,而图像处理器并不考虑这一点

所以在实践中,它是,实际值是一个很好的整数,单位为英寸,与图像中的像素数成比例。它可以确保您有机会在另一台物理尺寸大致相同的设备(如打印机)上复制图像。非常常见的值是72和96,这是监视器的默认值,与监视器大小无关,也与使用绘制程序创建图像时得到的值无关。300和600是常见的,分辨率便宜的扫描仪。与你花的钱成比例地增加一倍


我唯一一次看到它是一个小数,是在一个hokey图像转换程序中,它使米到英寸的转换失败了。将其截断而不是四舍五入。将其作为整数存储在数据库中是可以的。永远不是无穷大或NaN。

谁决定这些字段是浮动的?你自己你正在使用的图书馆?哪个API?@NayukiMinase、.NET framework、Image classOh!因为分辨率指的是每英寸点数,而不是像素尺寸。我们知道物理量是实数,而不是纯整数。有例子吗?要不要加上它作为答案?