I am getting unsupported parameter combination CGBitmap error with swift I am getting unsupported parameter combination CGBitmap error with swift ios ios

I am getting unsupported parameter combination CGBitmap error with swift


Just in case somebody is running into the same problem. The snippet below finally works.

let colorSpace:CGColorSpace = CGColorSpaceCreateDeviceRGB()let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedLast.rawValue)let context = CGBitmapContextCreate(nil, UInt(rect.size.width), UInt(rect.size.height), 8, 0, colorSpace, bitmapInfo)

It generates a 32 bit RGBA context in swift


Updated for Swift 3:

    let colorSpace = CGColorSpaceCreateDeviceRGB()    let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue)    guard let context = CGContext.init(data: nil, width: Int(size.width), height: Int(size.height), bitsPerComponent: Int(bitsPerComponent), bytesPerRow: Int(bytesPerRow), space: colorSpace, bitmapInfo: UInt32(bitmapInfo.rawValue)) else {        // cannot create context - handle error    }


In Swift 2.1 one can access the fields properly, and even OR them together:

let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue | CGBitmapInfo.ByteOrder32Little.rawValue)let context = CGBitmapContextCreate(baseAddress, width, height, 8,                bytesPerRow, colorSpace, bitmapInfo.rawValue);

Whole lot of 'rawValue' going on :)

You don't even need to separate out the bitmapInfo, and can do a one-liner:

let context = CGBitmapContextCreate(baseAddress, width, height, 8,                bytesPerRow, colorSpace, CGImageAlphaInfo.PremultipliedFirst.rawValue | CGBitmapInfo.ByteOrder32Little.rawValue