• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 遍历 UIImage 的所有像素

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:05:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我需要一些帮助来了解如何遍历 UIImage 中的每个像素。我正在查找每个像素中的红色、绿色、蓝色和 alpha 颜色值,然后比较它们以查看照片中是否存在某种颜色。

我有一个扩展,它返回像素的这些颜色值:

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)
}

}

我能够找到图像中特定像素的颜色值并检查它是否与特定颜色值匹配:

let specificPoint = CGPoint(x: 25, y: 25)
    let findColorValue = displayImage.image?.getPixelColor(pos: specificPoint)

    var redval: CGFloat = 0
    var greenval: CGFloat = 0
    var blueval: CGFloat = 0
    var alphaval: CGFloat = 0

    resultLabel.text = "r: \(redval) g: \(greenval) b: \(blueval) a: \(alphaval)"
    findColorValue?.getRed(&redval, green: &greenval, blue: &blueval, alpha: &alphaval)
    if resultLabel.text == "r: 1.0 g: 0.792156862745098 b: 0.474509803921569 a: 0.0156862745098039" {
        resultLabel.text = "YES"
    } else {
        resultLabel.text = "NO"
    }

我需要帮助创建一个 for 循环来遍历图像中的所有像素,并能够测试它们的特定颜色值。

我也不确定如何获得像素的颜色值是否 100% 正确,如果我做错了什么,请随时告诉我。

谢谢



Best Answer-推荐答案


使用嵌套的 for 循环:

for yCo in 0 ..< Int(image.size.height) { 
    for xCo in 0 ..< Int(image.size.width) {

        if image.getPixelColor(pos: CGPoint(x: xCo, y: yCo)) == UIColor(red: 1, green: 1, blue: 1, alpha: 1) {
            //Next step
        }
    }
}

关于ios - 遍历 UIImage 的所有像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42491670/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap