↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > UIImageの色情報を抜き出す

UIImageの色情報を抜き出す

UIImageに含まれるピクセル色データを取得します。この画像にはどんな色が含まれているんだときになる方はご利用くださいませ。

ピクセル色探し


参考:How do I get the color of a pixel in a UIImage with Swift?

ピクセルデータを取得してみた

以下の画像を読み込んで色情報をランダムで30ピクセル分取得してみる

サンプル画像



    override func viewDidLoad() {
        super.viewDidLoad()
        
        //ネットワークから画像読み込みUIImage作成
        let url = NSURL(string:"http://swift-salaryman.com/files/image/page_top.gif");
        var err: NSError?;
        var imageData :NSData = NSData(contentsOfURL:url!,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)!;
        var img = UIImage(data:imageData);
        
        //上記イメージのサイズが71pxicel x 145 pixcelの画像
        for (var i=0; i < 30; i++){
            var ranx = arc4random_uniform(UInt32(71));
            var rany = arc4random_uniform(UInt32(145));
            println(getPixelColorFromUIImage(img!,pos: CGPointMake(CGFloat(ranx), CGFloat(rany))).debugDescription);
        }
    }
    //CGPointに含まれる色データをUIImageから取得して返す
    func getPixelColorFromUIImage(myUIImage:UIImage, pos: CGPoint) -> UIColor {
        
        //ピクセルデータ取得してバイナリ化
        var pixelData = CGDataProviderCopyData(CGImageGetDataProvider(myUIImage.CGImage))
        var data: UnsafePointer = CFDataGetBytePtr(pixelData)
        
        //RGBおよびアルファ値を取得します
        var pixelInfo: Int = ((Int(myUIImage.size.width) * Int(pos.y)) + Int(pos.x)) * 4
        var r = CGFloat(data[pixelInfo]) / CGFloat(255.0)
        var g = CGFloat(data[pixelInfo+1]) / CGFloat(255.0)
        var b = CGFloat(data[pixelInfo+2]) / CGFloat(255.0)
        var a = CGFloat(data[pixelInfo+3]) / CGFloat(255.0)
        
        return UIColor(red: r, green: g, blue: b, alpha: a)
    }
    

出力結果


//色のある箇所は数値がはいっています。無い箇所は透明のRGB = 0 0 0 0が含まれています。
UIDeviceRGBColorSpace 0.635294 0.6 0.564706 1
UIDeviceRGBColorSpace 0 0 0 0
UIDeviceRGBColorSpace 0.745098 0.713725 0.690196 1
UIDeviceRGBColorSpace 0 0 0 0
UIDeviceRGBColorSpace 0 0 0 0
UIDeviceRGBColorSpace 0.996078 0.941176 0.882353 1
UIDeviceRGBColorSpace 0.705882 0.678431 0.658824 1
UIDeviceRGBColorSpace 0 0 0 0
UIDeviceRGBColorSpace 0 0 0 0
UIDeviceRGBColorSpace 0 0 0 0
UIDeviceRGBColorSpace 0 0 0 0
UIDeviceRGBColorSpace 0 0 0 0
UIDeviceRGBColorSpace 0.909804 0.854902 0.803922 1
UIDeviceRGBColorSpace 0 0 0 0
UIDeviceRGBColorSpace 0 0 0 0

おまけ

UIColorの取得を見やすいようにする処理はこちらから。

関連記事:UIColor - UIColor全般の情報
関連記事:UIColorを16進から取得 - カラーコードで取得する方法

↓こんな記事もありますよ!


2021-05-14 14:21:41

WatchOSのwatchconnectivityのFiletransferの落とし穴。と、避け方。

AppleWatch 実機だと成功するんだけど、シュミレーターだと失敗するという、、、 昔作成してた時は成功してたのになーと思って調べると、どうやら昔は成功してたみたい。watchOS6以降は...

2021-05-06 14:04:37

LINEのアニメーションスタンプ制作の落とし穴、、、失敗談

ゴールデンウィークにLINEスタンプを作成してみました。 作り切って申請も通したんですが、意図したアニメーションと違う、、、、 LINEクリエーターの画面だと、アニメーションのプレビュー...

2021-05-01 18:05:35

久しぶりのAdmobをobjective-cに実装。コンパイルエラーだらけ。バーミッション不具合でエミュレータにインスコできない。

忘れないようにメモ エミュレータにアプリをインストールする際にパーミッション系のエラーがでた時、また、iphone実機にインストールする際にも権限系のエラーが出る場合。 ターゲット→ex...
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!