Искажение цвета в CGImageCreate

Я пытаюсь создать захват изображения для своего приложения iOS, но я продолжаю получать искажения цвета в моем результате CGImage. Вот превью камеры, правильные цвета.

enter image description here

Кола красная, все хорошо.

Когда я запускаю свой код снимка, я получаю следующее:

enter image description here

Кола синяя... откуда это взялось?

Я пытался возиться с некоторыми параметрами, но в итоге не получил никакого изображения. Вот код моего снимка:

int bitsPerComponent = 8;
    int bitsPerPixel = 32;
    int bytesPerRow = [cameraVideo bufRowBytes];
    CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, [cameraVideo bufDataPtr], [cameraVideo bufWidth]*[cameraVideo bufHeight]*4, NULL);

    CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
    CGBitmapInfo bitmapInfo = kCGImageAlphaNoneSkipLast;
    CGColorRenderingIntent renderingIntent = kCGRenderingIntentPerceptual;

    CGImageRef imageRef = CGImageCreate( [cameraVideo bufWidth], [cameraVideo bufHeight], bitsPerComponent, bitsPerPixel,
                                        bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent);

    CGColorSpaceRelease(colorSpaceRef);

Я в отчаянии, поэтому, если кто-нибудь увидит, что я делаю неправильно, сообщите мне.

ИСПРАВЛЕНО

Вот окончательный код:

if (cameraVideo.ARPixelFormat == kCVPixelFormatType_32ARGB) {
    bitmapInfo = kCGBitmapByteOrder32Big | kCGImageAlphaNoneSkipFirst;
} else {
    bitmapInfo = kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst;
}
7
задан Nils Munch 3 April 2012 в 08:03
поделиться