1

我正在对来自设备相机的图像运行几个 CoreImage 过滤器,并且在将结果保存到相机胶卷时遇到了意外的麻烦。我的图像处理的结果是 a CIImage,我可以保存到 ALAssetsLibrary 的数据类型是CGImageRefor NSData(分别通过writeImageToSavedPhotosAlbum:metadata:completionBlock:writeImageDataToSavedPhotosAlbum:metadata:completionBlock:)。

似乎是一项微不足道的任务,但我找不到将我的数据类型转换CIImage为可写入照片库(使用 JPEG 压缩)的可用数据类型的工作方法。

编辑:我也想保存图像元数据,这样就排除了一些简单的 UIImage 保存技术。

4

2 回答 2

1

试试这个 :

-(void)storeImage:(CIImage*)_image
  CGImageRef cgImg = [context createCGImage:_image fromRect:[_image extent]];
  ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init];
  [library writeImageToSavedPhotosAlbum:cgImg 
                               metadata:[_image properties] 
                        completionBlock:^(NSURL *assetURL, NSError *error) {
                          CGImageRelease(cgImg);
                        }];
于 2013-01-15T19:33:24.513 回答
0

很简单,创建一个 UIImage 对象并使用initWithCIImage:. 然后,您可以将新的 UIImage 传递给UIImageWriteToSavedPhotosAlbum().

UIImage *image = [[UIImage alloc] initWithCIImage:myCIImage];
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
于 2013-01-15T18:41:19.357 回答