下記のgetPixelColor
関数を使用して1ピクセルの色を取得しています。しかし、正確なピクセルが渡された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
値を経由してアクセスする方法については不明です。
ありがとうございます!
だから、そのコード行に:変換をintに
変更の名前と広告いくつかCGFloatをし、これがある:再配置
:方程式は次のようになります位置(0,0)は画像の左下に対応するか? –
は残念なことに画像の向きに依存します。歴史的な理由から、QuartzはデカルトであるMac OS座標系を使用しています。 iOSでは、正のYは下を指すので、-Yでスケーリングされるか、またはx軸に関して反映されます。これにより、cgMethodsを使用するときに画像が上下逆さまに表示されることがあります。 UIImageはその向きを知っており、描画するときにそれに従って回転します。 https://developer.apple.com/reference/uikit/uiimage/1624141-imageorientation –