哪种是计算图像点数的正确方法?
Posted
技术标签:
【中文标题】哪种是计算图像点数的正确方法?【英文标题】:Which is the right way to calculate number of points of an image? 【发布时间】:2016-03-19 20:55:08 【问题描述】:View.Bounds 给了我 (0.0, 0.0, 375.0, 667.0) 的值来帮助计算视图尺寸。而 CGImage,位图的大小给了我 490 像素宽度和 751 像素高度的像素数。我不明白为什么当比例因子给我的值为 2 时,我得到的 UIView 边界内容大小小于 CGImage 像素宽度和高度。但是如何从维度计算点数?如何取出 375.0 和 667.0 并计算?下面的代码帮助我获取视图尺寸和比例因子。
let ourImage: UIImage? = imageView.image
let viewBounds = view.bounds
print("\(viewBounds)")
var scale: CGFloat = UIScreen.mainScreen().scale
print("\(scale)")
这是我用来接收 490 * 751 像素高度和宽度的代码。
public init?(image: UIImage)
guard let cgImage = image.CGImage else return nil
// Redraw image for correct pixel format
let colorSpace = CGColorSpaceCreateDeviceRGB()
var bitmapInfo: UInt32 = CGBitmapInfo.ByteOrder32Big.rawValue
bitmapInfo |= CGImageAlphaInfo.PremultipliedLast.rawValue & CGBitmapInfo.AlphaInfoMask.rawValue
width = Int(image.size.width)
height = Int(image.size.height)
....
或者我可以使用 (pixelWidth * 2 + pixelHeight * 2) 来计算点数吗?我需要使用主动轮廓法计算或固定点数 (n) 以替代图像分割的进一步方程。
【问题讨论】:
我不明白你在做什么。你究竟为什么要计算图像的大小?应该没关系。这听起来像是一个 XY 问题。 我需要计算或设置图像中的点数,以便在图像分割算法的进一步计算中使用它,需要使用方程中的值。那么我该如何继续计算或设置点数? 哦。所以......图像视图不会调整为图像的大小。图像视图将呈现缩放到图像视图大小的图像表示......但图像本身很可能是不同的大小(它甚至可能具有不同的纵横比)。image.size.width
和 image.size.height
为您提供实际图像的真实测量值。
哦,好的。处理给定的建议。非常感谢。
太好了,答案对我有用。您能否提供它作为答案,以便我可以选择它并提及这个问题作为回答?再次感谢您,我对大小和界限感到困惑。
【参考方案1】:
图像视图不会调整大小以匹配您为其设置的图像属性。您设置的图像也不会调整大小以匹配图像视图的框架。
相反,图像视图呈现的是该图像的表示,缩放到与图像视图匹配的任何大小(基于您选择的规则、宽高比匹配、宽高比填充、比例填充等)。
所以图像的实际大小正是从图像的size
属性返回的大小。
要获取实际图像的实际宽度,请使用:
image.size.width
同样,要获取实际图像的实际高度,请使用:
image.size.height
【讨论】:
以上是关于哪种是计算图像点数的正确方法?的主要内容,如果未能解决你的问题,请参考以下文章