【发布时间】:2017-01-23 07:01:59
【问题描述】:
我正在使用下面的getPixelColor 函数获取一个像素的颜色。但是,我不清楚从传递的CGPoint 访问的确切像素。我在哪里可以查看CGImage 的“起源”?左上角?左下?对于我从图像中获得的像素颜色,两者都没有任何意义。
extension CGImage {
func getPixelColor(pos: CGPoint) -> UIColor {
let pixelData = CGDataProviderCopyData(CGImageGetDataProvider(self.CGImage))
let data: UnsafePointer<UInt8> = CFDataGetBytePtr(pixelData)
let pixelInfo: Int = ((Int(self.size.width) * Int(pos.y)) + Int(pos.x)) * 4
let r = CGFloat(data[pixelInfo]) / CGFloat(255.0)
let g = CGFloat(data[pixelInfo+1]) / CGFloat(255.0)
let b = CGFloat(data[pixelInfo+2]) / CGFloat(255.0)
let a = CGFloat(data[pixelInfo+3]) / CGFloat(255.0)
return UIColor(red: r, green: g, blue: b, alpha: a)
}
}
我认为困惑在于:
let pixelInfo: Int = ((Int(self.size.width) * Int(pos.y)) + Int(pos.x)) * 4
我不清楚如何通过这个Int 值访问数据。
提前致谢!
【问题讨论】:
标签: ios swift image-processing pixel cgimage