19856


Xcode7.1、Swift2で開発をしています。  
指定したピクセル座標のRGBa値をUIColorで返す機能（getColorメソッド）を実装し、  
ViewController.swift内でprintメソッドで、コンソールに

[code]

    UIDeviceRGBColorSpace R G B a   //R，G，B，aはFloatの値
    
[/code]

という表示を出すところまでは成功したのですが、ここで得たRGBaの値もしくは  
コンソールに表示された文字列を、コード内で扱えるようにString型の変数に  
格納するためにはどうすればよいでしょうか？

よろしくお願いいたします。


CC BY-SA 3.0
2015-12-09T16:35:44.923
19823
2015-12-10T12:19:51.433
12401
question
ios swift
Swift2.0でUIColorのRGBa値をString型の変数に格納する方法


自己解決しましたので、報告も兼ねて回答します。  
getColorメソッドは[こちら](https://stackoverflow.com/questions/25146557/how-do-i-get-
the-color-of-a-pixel-in-a-uiimage-with-swift)のコードを参考に書いたのですが、  
特段戻り値がUIColorである必要がなかったため、

[code]

    func getColor(pos: CGPoint) -> UIColor
    
[/code]

としていた部分を

[code]

    func getColor(pos: CGPoint) ->(red: String, green: String, blue: String, alpha: String)
    
[/code]

と書き換え、

[code]

    return (r, g, b, a)
    
[/code]

というように戻り値を記述することで、無事にRGBa値の値をString型の変数に格納することができました。

参考までにgetColorメソッドを掲載します。

[code]

    func getColor(pos: CGPoint) -> (red: String, green: String, blue: String, alpha: String) {
    
        let imageData = CGDataProviderCopyData(CGImageGetDataProvider(self.CGImage))
        let data : UnsafePointer = CFDataGetBytePtr(imageData)
        let pixelInfo : Int = ((Int(self.size.width) * Int(pos.y)) + Int(pos.x)) * 4
        let rFloat = CGFloat(data[pixelInfo]) / CGFloat(255.0)
        let gFloat = CGFloat(data[pixelInfo+1]) / CGFloat(255.0)
        let bFloat = CGFloat(data[pixelInfo+2]) / CGFloat(255.0)
        let aFloat = CGFloat(data[pixelInfo+3]) / CGFloat(255.0)
        let r = rFloat.description
        let g = gFloat.description
        let b = bFloat.description
        let a = aFloat.description
    
        return (r, g, b, a)
    }
    
[/code]

どなたかの参考になれば幸いです。


CC BY-SA 3.0
2015-12-10T12:19:51.433
19856
2015-12-10T12:19:51.433
2017-05-23T12:38:56.467
-1
12401
19823
answer