这部分是出于好奇,部分是为了能够证明如何在 SQL Server 数据库中存储的决定是合理的:
为什么Image.HorizontalResolution
和Image.VerticalResolution
有 float 类型? “无穷大”和“NaN”如何发挥作用?
最佳答案
这个问题的实际答案是它是一个 float ,因为美国不使用公制,它以英寸为单位。世界其他地区使用米。一米为 25.4 英寸并不能产生漂亮的整数。图像文件格式使用不同的标准,有点讽刺的是,使用米而不是英寸的最常见图像格式是由一家美国公司创建的。 BMP 文件格式使用每米像素。
技术上更正确的答案也许是,分辨率是用于创建图像的图像传感器的设计参数。物理属性,如 CCD 传感器中的单元间距。并受到用于将场景投影到传感器上的镜头的影响。传感器和镜头都不一定具有每英寸可整除的数量。或每米。芯片烘焙工厂使用以米为单位的特征尺寸。嗯,纳米。而且镜头的焦距通常是可调的,而图像处理器并没有考虑到这一点。
所以实际上是 just a reference number实际选取的值是一个以英寸为单位的整数,与图像中的像素数成正比。它确保您可以在另一台设备(例如打印机)上以大致相同的物理尺寸复制图像。非常常见的值是 72 和 96,这是显示器的默认值(无论显示器尺寸如何),也是使用绘画程序创建图像时获得的值。 300和600是常见的,廉价扫描仪的分辨率。继续根据您花费的金额按比例加倍。
我唯一一次将其视为小数是在一个做作的图像转换程序中,该程序搞砸了米到英寸的转换。截断它而不是舍入它。当您舍入时,将其作为整数存储在数据库中就可以了。它永远不是无穷大或 NaN。
关于.net - Image.HorizontalResolution 和 Image.VerticalResolution - 为什么 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33111822/