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

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

外部ブラウザでURLを開く

アプリから外部ブラウザ(Safari)でURLを開く方法を記載します。内部的に利用する場合はWebViewを利用します。

UITextViewやらで縦書きができないか検証

「文字の縦書き」をやってみたいのですが、どうもUITextView等には設定が無いとのことです。 調べていると、本当にない?のかな。少し調査して作れそうなもんであればつくってみれたら、、、との気持ちで進めてみます。

UIStepper

さて今回は基本のコンポーネントの一つStepper(メモリを少しずつ+とーで上下させるコントロール)を説明します。 単純なコントロールですのが、初期設定で、+と-が表示される優れものです。ただ、単調な為に記事にするのが面白くないので、 何度も申し訳ありませんが「ヒゲ」にフォーカスして、ヒゲを剃るStepper(ヒゲの量を調整する)を作成して説明してみます。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!