相关疑难解决方法(0)

如何使用Swift获取UIImage中像素的颜色?

我试图用Swift获取UIImage中像素的颜色,但它似乎总是返回0.这是代码,从@Minas的答案转换到这个线程:

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

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

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

    return UIColor(red: r, green: g, blue: b, alpha: a)
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

uiimage ios swift

46
推荐指数
7
解决办法
4万
查看次数

使用CGPoint从图像获取像素颜色

在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) …
Run Code Online (Sandbox Code Playgroud)

cgimage uicolor ios swift

2
推荐指数
2
解决办法
3555
查看次数

标签 统计

ios ×2

swift ×2

cgimage ×1

uicolor ×1

uiimage ×1