我使用AFNetworking 2.0
从网络下载了gif图像,然后使用ALAssetsLibrary
将其保存到相机胶卷
[assetsLibrary writeImageToSavedPhotosAlbum:[responseObject CGImage] orientation:(ALAssetOrientation)[responseObject imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error)
{
if (error)
{
[App showAlertWithTitle:@"Error" message:@"Save message failed"];
}
else
{
[App showAlertWithTitle:@"Success" message:@"Saved success"];
}
}];
然后我尝试使用UIImagePickerViewController
从相机中检索此图像,但我检索到的图像不是GIF图像,而是带参考网址的jpeg图像:
UIImagePickerControllerReferenceURL = "assets-library://asset/asset.JPG?id=2E7C87E4-5853-4946-B86B-CC8AAF094307&ext=JPG";
我不知道错误是ALAssetsLibrary
还是UIImagePickerViewController
以及如何超越
答案 0 :(得分:0)
照片库不支持GIF。
它支持PHAssetMediaTypeImage
(JPG),PHAssetMediaTypeVideo
(MOV)或PHAssetMediaTypeAudio
(可能是M4A,此处不确定)。
答案 1 :(得分:-1)
writeImageToSavedPhotosAlbum:
方法仅将静态图像保存为JPEG,新的Photos方法也是如此。但是,是保存其他格式的方法,包括(是的!)GIF。
你不需要搞乱CGImageRefs - 只需抓住GIF数据然后使用writeImageDataToSavedPhotosAlbum:metadata:completionBlock:
方法保存它。像这样:
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
NSData *data = [NSData dataWithContentsOfURL:
[NSURL URLWithString:@"http://somewhere/something.gif"]]];
[library writeImageDataToSavedPhotosAlbum:data
metadata:nil
completionBlock:^(NSURL *assetURL, NSError *error) {
if (error) {
[App showAlertWithTitle:@"Error" message:@"Save message failed"];
} else {
[App showAlertWithTitle:@"Success" message:@"Saved success"];
}
}];
请参阅this answer。
如果你想生成一个GIF,它有点复杂,但只需保存一个即可。