Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

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

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進から取得 - カラーコードで取得する方法

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

UITextViewでテキストを複数行表示する

UITextFieldは一行表示ですが、UITextFieldは複数行を表示することができます。

アップルWatchから親アプリケーションへデータ送信

前回の記事では実機上で親アプリケーションからAppleWatchにイベントを送るのができなかった。 Notificationでできるはずなのですが、動作してくれなかった、、、、、。今回はいったん逆の時計から親アプリへのデータ送信の方法サンプルサイト をQiita様の中の記事でみつけましたので検証してみます。

AppleWatchをNSFileCoordinatorとKeychainでデータ交換

前回の記事(ナターシャさんのサンプルデモを元に解説)の続きです。今記事はNSUserDefaultではなく、 NSFileCoordinatorとKeychain sharingを利用しての解説です。ナターシャさんのサンプルに関して前記事をご参照ください。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!