我在Swift中想要获取指定CGPoint的像素颜色,但是遇到了很多困难。以下是我的代码:
@IBOutlet weak var graphImage: UIImageView!
var image : UIImage?
override func viewDidLoad() {
super.viewDidLoad()
}
func getPixelColor(pos: CGPoint) -> UIColor {
var pixelData = CGDataProviderCopyData(CGImageGetDataProvider(self.graphImage.image!.CGImage))
var data : UnsafePointer<UInt8> = CFDataGetBytePtr(pixelData)
var pixelInfo : Int = ((Int(graphImage.image!.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)
}
@IBAction func playTapped(sender: AnyObject) {
getPixelColor(CGPoint(x: 100.0, y: 100.0))
}
当我点击播放按钮后,我的应用程序崩溃了,在“let g = CGFloat…”这一行。尽管我对任何与图像有关的东西都很陌生,但我没有看到任何错误。我想知道是否需要使用不同类型的图像,或者我的pixelInfo变量中是否有问题。顺便说一下,我从How do I get the color of a pixel in a UIImage with Swift?中获取了大部分代码。有人能指出可能存在的问题吗?非常感谢您的帮助!