Rob*_*way 10 xcode objective-c gif ios alassetslibrary
谢谢阅读.我使用此问题中的方法创建了一个GIF:
我试图用这似乎是一个能够不JPG/PNG图像保存至相机胶卷的唯一方法,ALAssetLibrary的writeImageDataToSavedPhotosAlbum:metadata:completionBlock:
我将Gif保存到临时目录中,如下所示:
NSString *exportPath = [NSTemporaryDirectory() stringByAppendingString:@"/animated.gif"];
NSURL *fileURL = [NSURL fileURLWithPath:exportPath isDirectory:NO];
Run Code Online (Sandbox Code Playgroud)
然后访问NSData类似:
NSData * gifData = [NSData dataWithContentsOfFile:fileURL.absoluteString];
Run Code Online (Sandbox Code Playgroud)
因为我能够在显示它的GIF创建UIImageView,但是当我试图挽救它,该方法返回一个成功(没有错误),但实际上并没有保存(返回Nil为NSURL * assetURL并没有出现在摄像头滚).
如何让我的GIF成功保存到相机胶卷?
bll*_*akk 11
**
解决方案01:仅将现有GIF文件保存到相机胶卷
**
据我了解你的问题.您可以生成GIF文件但无法保存并将其查看到相机胶卷.
所以我使用现有的GIF文件附加了一个示例测试.
步骤01.我在我的Application Document目录中复制了一个gif IMG_0009.GIF文件.
步骤02比我使用下面的代码加载这个文件NSData:
NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil];
NSURL *fileURL = [documentsDirectoryURL URLByAppendingPathComponent:@"IMG_0009.gif"];
NSData *gifData = [NSData dataWithContentsOfFile:[fileURL path]];
Run Code Online (Sandbox Code Playgroud)
步骤03:现在我将文件保存在媒体目录中:
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeImageDataToSavedPhotosAlbum:gifData metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {
NSLog(@"Success at %@", [assetURL path] );
}];
Run Code Online (Sandbox Code Playgroud)
资产网址是正确的.现在您可以查看媒体目录.你可以找到保存的gif图像.
玩得开心 :)
**
解决方案02:创建并保存GIF到相机胶卷的演示
**
我克隆了一些解决方案,以显示创建和保存GIF文件到相机胶卷.你可以在github上下载并检查我的fork:
该演示通过拍摄2张或更多图像创建GIF文件并保存在相机胶卷目录中
https://github.com/bllakjakk/Giraffe
要关注的主要代码如下:
[export encodeToFile:tempFile callback:^(NSString * aFile) {
NSLog(@"Path: %@", aFile);
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
NSData *data = [NSData dataWithContentsOfURL:[[NSURL alloc]initFileURLWithPath:aFile]];
[library writeImageDataToSavedPhotosAlbum:data metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {
NSLog(@"Success at %@", [assetURL path] );
}];
Run Code Online (Sandbox Code Playgroud)
}];
它使用了我在http://jitsik.com/wordpress/?p=208之前在我的解决方案中提到的库
如何验证:
步骤01:运行演示项目.
步骤02:按照应用程序的指示添加2个图像,然后单击"导出".
步骤03:现在检查相机胶卷,你会发现创建的gif.
以前:
GIF是一种专有格式,因此您需要第三方库来保存它.
请查看以下链接:http://jitsik.com/wordpress/?p = 208
我发现问题是我无法实际从文件中获取 GIF。我从 using 切换到CGImageDestinationCreateWithURL并CGImageDestinationCreateWithData使用 aCFMutableDataRef来保存 Gif 数据。我不知道为什么,但这使得保存到相机胶卷变得很writeImageDataToSavedPhotosAlbum困难。
| 归档时间: |
|
| 查看次数: |
6346 次 |
| 最近记录: |