ios – 加速像素迭代

ios – 加速像素迭代,第1张

概述我遇到的问题是无法足够快地迭代UI Image中的所有像素,检查每种颜色与特定的颜色(绿色).一旦用户启动迭代,就必须立即处理迭代.目前有0.5秒的延迟. 我正在使用它来创建视图的屏幕截图: func screenshot() -> UIImage { UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, UIS 我遇到的问题是无法足够快地迭代UI Image中的所有像素,检查每种颜色与特定的颜色(绿色).一旦用户启动迭代,就必须立即处理迭代.目前有0.5秒的延迟.

我正在使用它来创建视图的屏幕截图:

func screenshot() -> UIImage {     UIGraphicsBeginImageContextWithOptions(vIEw.bounds.size,false,UIScreen.main.scale)    vIEw.layer.render(in: UIGraphicsGetCurrentContext()!)    let screenShot = UIGraphicsGetimageFromCurrentimageContext()    UIGraphicsEndImageContext()    return screenShot!  }

这样可以获得单个像素的颜色:

extension UIImage {    func getPixelcolor(pos: CGPoint) -> UIcolor {        let pixelData = self.cgImage!.dataProvIDer!.data        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)    }}

这个循环检查图像的每个像素:

testimage = screenshot()greenPresent = falsefor yCo in 0 ..< Int(testimage.size.height) {    for xCo in 0 ..< Int(testimage.size.wIDth) {        if testimage.getPixelcolor(pos: CGPoint(x: xCo,y: yCo)) == UIcolor(red: 0,green: 1,blue: 0,Alpha: 1) {            greenPresent = true            greenCount += 1        }    }}

任何建议,将不胜感激.

编辑

性能受到0.0的比例因子的影响;我希望能适应这一点.

解决方法 这是您发布的代码的更高效版本:

testimage = imageFromVIEw()var greenCount = 0if let cfdata = testimage.cgImage?.dataProvIDer?.data {    let data = cfdata as Data    for i in strIDe(from: 0,to: data.count,by: 4) {        let r = data[i]        let g = data[i+1]        let b = data[i+2]        if g == 255 && r == 0 && b == 0 {            greenCount += 1        }    }}

此代码消除了原始代码中的许多低效率.数据只获得一次.没有使用积分.直接访问数据字节.不需要创建UIcolor.不需要转换为CGfloat.

总结

以上是内存溢出为你收集整理的ios – 加速像素迭代全部内容,希望文章能够帮你解决ios – 加速像素迭代所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1063005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存