我有2张图片,我想比较,如果像素颜色是相同的保存它。 我检测像素的颜色由该UIImage
扩展功能:斯威夫特 - 在CGPoint比较颜色
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张图片中获得信息并将其与哪种功能进行比较?
我想看到在其上CGPoint的像素的颜色是从2倍相同的图像?
更新: 我更新getPixelColor回到我“(POS)(R)(G)(B)(a)条”之后,我创造了这个功能,只留下了副本(使用此功能一定要未雨绸缪。排序()阵列)
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
也 - 你检查每一个像素?如果您正在扫描这些照片,我认为您甚至在您开始担心扫描每个维度中的每种颜色的正确率为1/255之前,都没有太多机会让它们排列在像素完美的位置。 – Russell
的UIColor不符合协议可哈希... 一些像素是100%相同,我希望看到在其上CGPoint是相同的... –