У меня есть изображение, которое я беру из AVFoundation:
[stillImage captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error) {
NSLog(@"image capture");
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];
UIImage *image = [[UIImage alloc] initWithData:imageData];
Затем я обрезаю это изображение, сначала конвертируя его в CIImage:
beginImage = [CIImage imageWithCVPixelBuffer:CMSampleBufferGetImageBuffer(imageSampleBuffer) options:[NSDictionary dictionaryWithObjectsAndKeys:[NSNull null], kCIImageColorSpace, nil]];
//first we crop to a square
crop = [CIFilter filterWithName:@"CICrop"];
[crop setValue:[CIVector vectorWithX:0 Y:0 Z:70 W:70] forKey:@"inputRectangle"];
[crop setValue:beginImage forKey:@"inputImage"];
croppedColourImage = [crop valueForKey:@"outputImage"];
Затем я пытаюсь преобразовать это обратно в CGImage, чтобы сохранить его:
CGImageRef cropColourImage = [context createCGImage:croppedColourImage fromRect:[croppedColourImage extent]];
UIImage *cropSaveImage = [UIImage imageWithCGImage:cropColourImage];
//saving of the images
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeImageToSavedPhotosAlbum:[cropSaveImage CGImage] orientation:(ALAssetOrientation)[image imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){
if (error) {
NSLog(@"ERROR in image save :%@", error);
} else
{
NSLog(@"SUCCESS in image save");
}
}];
Однако это вызывает ошибку:
ОШИБКА при сохранении изображения: Error Domain = ALAssetsLibraryErrorDomain Code = -3304 «Не удалось закодировать изображение для сохраненных фотографий». UserInfo = 0x19fbd0 {NSUnderlyingError = 0x18efa0 «Не удалось закодировать изображение для сохраненных фотографий.», NSLocalizedDescription = Не удалось кодировать изображение для сохраненных фотографий.}
Я читал в другом месте, что это может произойти, если изображение было 0x0 пикселей, и что преобразование из CIImage в CGImage может вызвать проблему. Любые идеи?
Спасибо.