先日React NativeでやったことのiOSネイティブ実装版です。
React Native版はこれ↓
んで、Swift版なんですが、いい感じに実装してくれているEasyImagy
というライブラリを見つけたのでこれを試してみました。
日本の方っぽいですね。ありがたや。
お試し用の画像としては以下を使います。画素がはっきりしているのでわかりやすくて良いんです。
https://imgur.com/download/OSEiha9
UIImage
やData
などを使ってインスタンスを初期化しうると画素を取れるようになります。
// UIImageの場合
image = Image<RGBA<UInt8>>(uiImage: imageView.image!)
各色の列を取り出してテキストに出力してみました。UITextView
を縦に4つ並べて雑に書き出しています。対象のViewController全体のコードは↓のようになりました。
import EasyImagy
class EasyImagyViewController: UIViewController {
@IBOutlet weak var redText: UITextView!
@IBOutlet weak var greenText: UITextView!
@IBOutlet weak var blueText: UITextView!
@IBOutlet weak var alphaText: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
let uiImage : UIImage = #imageLiteral(resourceName: "image")
let image = Image<RGBA<UInt8>>(uiImage: uiImage)
redText.text = "\(image.map { $0.redInt })"
greenText.text = "\(image.map { $0.greenInt })"
blueText.text = "\(image.map { $0.blueInt })"
alphaText.text = "\(image.map { $0.alphaInt })"
}
}
結果このようになりました。各色のデータとわかるように色をつけています。最後はAlphaです。それぞれをIntで出しているので0〜255の範囲になっています。見た感じちゃんと取れていそうですね。
ソースはこちらに。