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

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

のんでいるくすり: 3.11震災時の体験から開発されたお薬アプリ。無料

今日は薬を便利にかつ守秘的にメモできるアプリのんでいる薬をご紹介します。 実はアプリレビューは初めて。 SwiftサラリーマンのFBページを経由して開発者でもあり薬剤師のBlueRoy(ブルーロワ・インク) Inc. のShige様とお知り合いになる事ができて、是非レビューさせて下さいと私からお願いした経緯で今回レビュー記事に繋がりました。 Shige様、快く了承頂き本当にありがとうございました!

NSNotificationCenterでコード間のイベントやりとり

AppDelegateのイベント(アプリがアクティブ)になるタイミングでViewControllerに通知する為にはどうすればいいのか?と 調査しているとこのクラスにたどり着きました。delegateを利用せずにイベントの通知をViewController間で簡単に実装できるので 使いやすいです!

String

StringとNSStringどちらを利用することもできますが、、、
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!