Я пытаюсь создать захват изображения для своего приложения iOS, но я продолжаю получать искажения цвета в моем результате CGImage. Вот превью камеры, правильные цвета.
Кола красная, все хорошо.
Когда я запускаю свой код снимка, я получаю следующее:
Кола синяя... откуда это взялось?
Я пытался возиться с некоторыми параметрами, но в итоге не получил никакого изображения. Вот код моего снимка:
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;
}