我有两张图片想要比较,如果像素颜色相同则保存它。
我使用这个 UIImage
扩展函数检测像素颜色:
func getPixelColor(pos: CGPoint) -> ??? {
let pixelData = CGDataProviderCopyData(CGImageGetDataProvider(self.CGImage))
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 ???
}
例如,我在图片1上运行扫描仪并将其保存在一个数组中?还是字典?之后,当我拥有来自2张图片的信息进行比较时,我会运行图片2上的扫描仪,并使用哪个函数?我想看看从2个图像中哪个CGPoint的像素颜色是相同的?
更新: 我更新了getPixelColor,让它返回“(pos)(r)(g)(b)(a)”,然后我创建了这个函数,只留下了重复项(在使用此函数之前,您必须对数组进行.sort()操作!)
extension Array where Element : Equatable {
var duplicates: [Element] {
var arr:[Element] = []
var start = 0
var start2 = 1
for _ in 0...self.count{
if(start2<self.count){
if(self[start] == self[start2]){
if(arr.contains(self[start])==false){
arr.append(self[start])
}
}
start+=1
start2+=1
}
}
return arr
}
}
这让我返回了类似以下的东西:"(609.0, 47.0)1.01.01.01.0"。 我知道此时颜色是黑色,我执行x-536以适应iPhone 5屏幕,当我尝试再次绘制时它画错了...也许我不能正确地做到这一点..请帮忙?
UIColor
,并检查它们是否相等?请注意,颜色的差异是一个讨论得比较多的话题,有很多不同的方法。 - Larme