先日React NativeでやったことのiOSネイティブ実装版です。

React Native版はこれ↓

んで、Swift版なんですが、いい感じに実装してくれているEasyImagyというライブラリを見つけたのでこれを試してみました。

日本の方っぽいですね。ありがたや。

お試し用の画像としては以下を使います。画素がはっきりしているのでわかりやすくて良いんです。

https://imgur.com/download/OSEiha9

UIImageDataなどを使ってインスタンスを初期化しうると画素を取れるようになります。

1// UIImageの場合
2image = Image<RGBA<UInt8>>(uiImage: imageView.image!)

各色の列を取り出してテキストに出力してみました。UITextViewを縦に4つ並べて雑に書き出しています。対象のViewController全体のコードは↓のようになりました。

 1import EasyImagy
 2
 3class EasyImagyViewController: UIViewController {
 4
 5    @IBOutlet weak var redText: UITextView!
 6    @IBOutlet weak var greenText: UITextView!
 7    @IBOutlet weak var blueText: UITextView!
 8    @IBOutlet weak var alphaText: UITextView!
 9
10    override func viewDidLoad() {
11        super.viewDidLoad()
12
13        let uiImage : UIImage = #imageLiteral(resourceName: "image")
14        let image = Image<RGBA<UInt8>>(uiImage: uiImage)
15        redText.text = "\(image.map { $0.redInt })"
16        greenText.text = "\(image.map { $0.greenInt })"
17        blueText.text = "\(image.map { $0.blueInt })"
18        alphaText.text = "\(image.map { $0.alphaInt })"
19    }
20}

結果このようになりました。各色のデータとわかるように色をつけています。最後はAlphaです。それぞれをIntで出しているので0〜255の範囲になっています。見た感じちゃんと取れていそうですね。

ソースはこちらに。