Ich habe 2 Bilder, die ich vergleichen möchte, wenn Pixelfarbe die gleiche ist, um es zu speichern. ich erkennen, die Farbe des Pixels durch diese UIImage
Erweiterungsfunktion:Swift - Vergleichen Sie Farben bei 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 ???
}
Zum Beispiel führe ich den Scanner auf Bild 1 und es in einem Array speichern? Oder ein Wörterbuch? Und dann laufe ich den Scanner auf Bild 2 und wenn ich die Informationen von 2 Bildern habe um sie mit welcher Funktion zu vergleichen?
Ich möchte sehen, auf welchem CGPoint die Pixelfarben aus 2 Bildern identisch sind?
UPDATE: Ich aktualisiere getPixelColor, um mir "(Pos) (r) (g) (b) (a)" und danach habe ich diese Funktion erstellt, die nur Duplikate (vor der Verwendung dieser Funktion Sie haben). (sortiert) dIE 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
}
}
das gibt mir so etwas wie diese: „(609,0, 47,0) 1.01.01.01.0“ ich weiß, dass die Farbe an dieser Stelle schwarz ich x-536 zu fit iPhone 5 Bildschirm und wenn ich versuche, es wieder zu zeichnen es zieht etwas falsch ... vielleicht kann ich es nicht richtig machen .. Hilfe?
Rückkehr ein 'UIColor', und überprüfen, ob sie Gleichen sind? Beachten Sie, dass der Unterschied zwischen den Farben ein viel diskutiertes Thema ist. – Larme
auch - überprüfen Sie jedes einzelne Pixel? Wenn Sie diese Bilder einscannen, haben Sie kaum eine Chance, dass sie pixelgenau aneinandergereiht werden, noch bevor Sie anfangen, sich darum zu kümmern, dass jede Farbe in jeder Dimension korrekt auf 1/255 gescannt wird. – Russell
UIColor ist nicht konform zu Protokoll hashable ... Einige der Pixel sind 100% identisch, ich möchte sehen, auf welche CGPoint sind identisch ... –