2015-04-23 77 views
4

我有以下swift代碼。如何在swift中找到UIImage中單個像素的顏色

let resolution = [imageView.frame.size.width, imageView.frame.size.height] 

for x in 0...Int(resolution[0]) { 
    for y in 0...Int(resolution[1]) { 
     let coordinate = [x, y] 
     //Find the colour of the pixel here 
    } 
} 

我希望能夠找到照片中每個像素顯示的顏色。有沒有辦法修改我已經放置的代碼「//在此查找像素的顏色」,以便在常量座標所代表的座標處打印像素的RGB值?

+0

參考此答案http://stackoverflow.com/questions/3284185/get-pixel-color-of-uiimage –

回答

3

你可以嘗試以下方法:

var pixel : [UInt8] = [0, 0, 0, 0] 
var colorSpace = CGColorSpaceCreateDeviceRGB() 
let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedLast.rawValue) 
let context = CGBitmapContextCreate(UnsafeMutablePointer(pixel), 1, 1, 8, 4, colorSpace, bitmapInfo) 

希望這有助於!

2

添加到@ Horray的答案,要獲得顏色值,你必須再執行兩行。只要檢查該實現,

var pixel : [UInt8] = [0, 0, 0, 0] 
var colorSpace = CGColorSpaceCreateDeviceRGB() 
let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedLast.rawValue) 
let context = CGBitmapContextCreate(UnsafeMutablePointer(pixel), 1, 1, 8, 4, colorSpace, bitmapInfo) 

// Translate the context your required point(x,y) 
CGContextTranslateCTM(context, -x, -y); 
yourImageView.layer.renderInContext(context) 

NSLog("pixel: %d %d %d %d", pixel[0], pixel[1], pixel[2], pixel[3]); 

let redColor : Float = Float(pixel[0])/255.0 
let greenColor : Float = Float(pixel[1])/255.0 
let blueColor: Float = Float(pixel[2])/255.0 
let colorAlpha: Float = Float(pixel[3])/255.0 

// Create UIColor Object  
var color : UIColor! = UIColor(red: CGFloat(redColor), green: CGFloat(greenColor), blue: CGFloat(blueColor), alpha: CGFloat(colorAlpha)) 
+0

您可以通過'X,y'訪問像素上的表現拯救而不是先畫 –