繁体   English   中英

将UIImage转换为CGImage以获取像素颜色

[英]Converting UIImage to CGImage to get Pixel Color

基于此问题的代码( 如何在Swift中获取UIImage中像素的颜色? ),我试图在点击按钮时运行一个函数。 到目前为止,这是我的代码:

@IBOutlet weak var graphImage: UIImageView!

var image : UIImage?

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

func getPixelColor(pos: CGPoint) -> UIColor {
    var pixelData = CGDataProviderCopyData(CGImageGetDataProvider(self.image!.CGImage))
    var data : UnsafePointer<UInt8> = CFDataGetBytePtr(pixelData)

    var pixelInfo : Int = ((Int(image!.size.width) * Int(pos.y) + Int(pos.x)*4))

    let r = CGFloat(data[pixelInfo])
    let g = CGFloat(data[pixelInfo]+1)
    let b = CGFloat(data[pixelInfo]+2)
    let a = CGFloat(data[pixelInfo]+3)

    return UIColor(red: r, green: g, blue: b, alpha: a)
}

@IBAction func playTapped(sender: AnyObject) {
    var c : CGFloat = 100.0
    var d : CGFloat = 100.0
    getPixelColor(CGPoint(x:c,y:d))
}

但是,每当我在iOS Simulator中点击“播放”按钮时,应用程序就会崩溃,并且在函数getPixelColor的第一行上显示警告“致命错误:在展开可选值时意外发现nil”。 我在这里做错了什么/我需要添加什么?

非常简单。 根据此处的代码,您实际上是在展开一个nil对象。 您的实例变量image永远不会初始化为任何东西。因此,您尝试用!强制对其进行包装! 但实际上是nil

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM