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