아래의 getPixelColor
함수를 사용하여 하나의 픽셀 색상을 얻고 있습니다. 그러나 정확한 픽셀이 전달 된 CGPoint
에서 액세스되고 있는지 확실하지 않습니다. CGImage
의 '출처'는 어디서 볼 수 있습니까? 왼쪽 위? 왼쪽 하단? 내 이미지와 함께 얻는 픽셀 색상에는 아무런 의미가 없습니다.신속하게 픽셀 데이터를 추출 할 때 CGImage를 시각화하는 방법
extension CGImage {
func getPixelColor(pos: CGPoint) -> UIColor {
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 UIColor(red: r, green: g, blue: b, alpha: a)
}
}
나는 혼란 라인 내에있는 생각 :
let pixelInfo: Int = ((Int(self.size.width) * Int(pos.y)) + Int(pos.x)) * 4
나는 데이터가이 Int
값을 통해 액세스하는 방법에 불분명입니다.
미리 감사드립니다.
는 것 위치 (0,0)는 이미지의 왼쪽 하단에 해당합니까? –
은 불행히도 이미지의 방향에 따라 다릅니다. 역사적인 이유로 Quartz는 직교 좌표 인 Mac OS 좌표계를 사용합니다. iOS에서 양수 Y는 아래로 내려 가기 때문에 -Y로 크기가 조정되거나 x 축에 대해 반영됩니다. 이렇게하면 cgMethods를 사용할 때 이미지가 거꾸로 나타날 수 있습니다. UIImage는 방향을 알고 있으며 그리기 할 때 그에 따라 회전합니다. https://developer.apple.com/reference/uikit/uiimage/1624141-imageorientation –