Desmond Hume
Desmond Hume

Reputation: 8627

CGBitmapContextCreate stopped working for iOS 9

So this piece of code used to work for iOS 8 but stopped working for iOS 9

let bitsPerComponent = CGImageGetBitsPerComponent(cgImage)
let colorSpace = CGImageGetColorSpace(cgImage)
let bitmapInfo = CGImageGetBitmapInfo(cgImage)
let context =
    CGBitmapContextCreate(
        nil, newPixelWidth, newPixelHeight, bitsPerComponent, 0, colorSpace,
        bitmapInfo.rawValue)

And the CoreGraphics's explanation is:

CGBitmapContextCreate: unsupported parameter combination:
    8 integer bits/component;
    32 bits/pixel;
    RGB color space model; kCGImageAlphaLast;
    2400 bytes/row.
Valid parameters for RGB color space model are:
    16  bits per pixel,      5  bits per component,      kCGImageAlphaNoneSkipFirst
    32  bits per pixel,      8  bits per component,      kCGImageAlphaNoneSkipFirst
    32  bits per pixel,      8  bits per component,      kCGImageAlphaNoneSkipLast
    32  bits per pixel,      8  bits per component,      kCGImageAlphaPremultipliedFirst
    32  bits per pixel,      8  bits per component,      kCGImageAlphaPremultipliedLast
    64  bits per pixel,      16 bits per component,      kCGImageAlphaPremultipliedLast
    64  bits per pixel,      16 bits per component,      kCGImageAlphaNoneSkipLast
    128 bits per pixel,      32 bits per component,      kCGImageAlphaNoneSkipLast |kCGBitmapFloatComponents
    128 bits per pixel,      32 bits per component,      kCGImageAlphaPremultipliedLast |kCGBitmapFloatComponents

But newPixelWidth is 600 and 600*4 = 2400. What's the deal here?

Upvotes: 2

Views: 778

Answers (1)

matt
matt

Reputation: 536018

I'm no expert, but haven't you given your own answer?

32  bits per pixel,      8  bits per component,      kCGImageAlphaNoneSkipFirst
32  bits per pixel,      8  bits per component,      kCGImageAlphaNoneSkipLast
32  bits per pixel,      8  bits per component,      kCGImageAlphaPremultipliedFirst
32  bits per pixel,      8  bits per component,      kCGImageAlphaPremultipliedLast

None of those are kCGImageAlphaLast, so I would assume that's the issue.

Upvotes: 3

Related Questions