将生成的GIF保存到相机胶卷?

Rob*_*way 10 xcode objective-c gif ios alassetslibrary

谢谢阅读.我使用此问题中的方法创建了一个GIF:

通过iOS创建和导出动画gif?

我试图用这似乎是一个能够不JPG/PNG图像保存至相机胶卷的唯一方法,ALAssetLibrarywriteImageDataToSavedPhotosAlbum: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,但是当我试图挽救它,该方法返回一个成功(没有错误),但实际上并没有保存(返回NilNSURL * 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

  • 知道如何使用照片框架做到这一点? (2认同)

Rob*_*way 2

我发现问题是我无法实际从文件中获取 GIF。我从 using 切换到CGImageDestinationCreateWithURLCGImageDestinationCreateWithData使用 aCFMutableDataRef来保存 Gif 数据。我不知道为什么,但这使得保存到相机胶卷变得很writeImageDataToSavedPhotosAlbum困难。