Re:在swift中从UIImage / CGImage获取像素数据作为数组

时间:2016-03-11 15:55:13

标签: swift uiimage rgb bmp cgimage

此代码适用于我(Swift 2游乐场)的灰度,加载颜色.BMP图像......

Get pixel data as array from UIImage/CGImage in swift

...但如果我将bytesPerPixel更改为3(或4)并使用

let colorSpace = CGColorSpaceCreateDeviceRGB()

...代码仍然运行且没有错误,但像素值全为零。关于如何解决这个问题的任何建议?

1 个答案:

答案 0 :(得分:0)

您可能忘记了CGImageAlphaInfo参数。对于彩色图像,如果假设bytesPerPixel为4,则需要在创建上下文时设置RGBA(或ARGB)。以下是没有alpha通道的RGBA示例。

// RGBA format
let ctx = CGBitmapContextCreate(&data, pixelsWide, pixelsHigh, 8,   
    bitmapBytesPerRow, colorSpace, CGImageAlphaInfo.NoneSkipLast.rawValue)

根据文档,您有以下选项:

enum CGImageAlphaInfo : UInt32 {
    case None
    case PremultipliedLast
    case PremultipliedFirst
    case Last
    case First
    case NoneSkipLast
    case NoneSkipFirst
    case Only
}