变更记录

序号 录入时间 录入人 备注
1 2016-12-01 Alfred Jiang -

方案名称

相册 - 保存 GIF 动画图片至相册

关键字

相册 \ GIF \ 动图保存

需求场景

  1. 需要保存 GIF 图片至相册时

参考链接

  1. [伯乐在线 - ](iOS 关于 GIF 图片那点事)(推荐)

详细内容

引入头文件

1
2
3
4

#import <Photos/Photos.h>
#import <AssetsLibrary/AssetsLibrary.h>

保存函数如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

- (void)saveImageData:(NSData *)imageData completionBlock:(void (^)(NSError *error))completionBlock
{

if ([UIDevice currentDevice].systemVersion.floatValue >= 9.0f) {

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{

PHAssetResourceCreationOptions *options = [[PHAssetResourceCreationOptions alloc] init];
[[PHAssetCreationRequest creationRequestForAsset] addResourceWithType:PHAssetResourceTypePhoto
data:imageData
options:options];
}
completionHandler:^(BOOL success, NSError * _Nullable error) {

if (completionBlock) {

completionBlock(error);
}
}];
}
else {

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeImageDataToSavedPhotosAlbum:imageData
metadata:nil
completionBlock:^(NSURL *assetURL, NSError *error) {

if (completionBlock) {

completionBlock(error);
}
}];
}
}

使用示例

1
2
3
4
5
6
7
8
9
10
11
12

NSString *path = [[NSBundle mainBundle] pathForResource:@"testGIFImage" ofType:@"gif"];
NSData *data = [NSData dataWithContentsOfFile:path];

[self saveImageData:data
completionBlock:^(NSError *error) {

if (error) {

NSLog(@"error : %@",error);
}
}];

效果图

(无)

备注

(无)