我有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是相同的... –