У меня есть 2 картинки, которые я хочу сравнить, если цвет пикселей одинаковый, чтобы сохранить его.
Я обнаруживаю цвет пикселя этой функцией расширения 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-х фотографий, чтобы сравнить ее с какой функцией?
Я хочу увидеть, на какой CGPoint пиксели совпадают с двумя изображениями?
UPDATE: Я обновляю getPixelColor, чтобы вернуть меня "(pos) (r) (g) (b) (a)", и после этого я создал эту функцию, которая оставила только дубликаты (ПЕРЕД ИСПОЛЬЗОВАНИЕМ ЭТОЙ ФУНКЦИИ, ВЫ ИМЕЛИСЬ .sort() ARRAY!)
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, и когда я делаю попытку сделать его снова, он рисует что-то неправильно... возможно Я не могу сделать это правильно.. помочь?