Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS将图像保存到相机卷_Ios_Image Processing_Core Image - Fatal编程技术网

iOS将图像保存到相机卷

iOS将图像保存到相机卷,ios,image-processing,core-image,Ios,Image Processing,Core Image,我在设备摄像头的图像上运行了几个CoreImage过滤器,在将结果保存到摄像头滚轮时遇到了意外的问题。我的图像处理的结果是一个CIImage,我可以保存到AlassetLibrary中的数据类型是cImageRef或NSData(分别通过writeImageToSavedPhotosAlbum:metadata:completionBlock:和writeImageDataToSavedPhotosAlbum:metadata:completionBlock:) 这似乎是一项琐碎的任务,但我找不

我在设备摄像头的图像上运行了几个CoreImage过滤器,在将结果保存到摄像头滚轮时遇到了意外的问题。我的图像处理的结果是一个
CIImage
,我可以保存到AlassetLibrary中的数据类型是
cImageRef
NSData
(分别通过
writeImageToSavedPhotosAlbum:metadata:completionBlock:
writeImageDataToSavedPhotosAlbum:metadata:completionBlock:

这似乎是一项琐碎的任务,但我找不到一种有效的方法将我的
CIImage
转换为可写入照片库(使用JPEG压缩)的可用数据类型


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

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


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

试试这个:

-(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);
                        }];
试试这个:

-(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);
                        }];

这种方法很有效,但在一个非常基本的层面上-这种方法不支持保存图像元数据,不像
writeImageToSavedPhotosAlbum:metadata:completionBlock
及其基于NSData的同级。我正在iOS 9中尝试这种精确的方法,但它不起作用。如果图像非常大,这种方法也需要更多的内存,但在一个非常基本的层面上-此方法不支持保存图像元数据,这与
writeImageToSavedPhotosAlbum:metadata:completionBlock
及其基于NSData的同级不同。我在iOS 9中尝试了这种完全相同的方法,但它不起作用。而且,如果图像像许多其他东西一样大,则需要更多的内存,AlassetLibrary已弃用。与其他许多东西一样,AlassetLibrary也已弃用。