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

谢谢阅读。 我用这个问题的方法创build了一个GIF:

通过iOS创build和导出animationgif?

我试图使用唯一的方法,似乎可以将非JPG / PNG图像保存到相机胶卷, ALAssetLibrarywriteImageDataToSavedPhotosAlbum:metadata:completionBlock:

我将Gif保存到temp目录中,如下所示:

 NSString *exportPath = [NSTemporaryDirectory() stringByAppendingString:@"/animated.gif"]; NSURL *fileURL = [NSURL fileURLWithPath:exportPath isDirectory:NO]; 

然后像这样访问NSData

 NSData * gifData = [NSData dataWithContentsOfFile:fileURL.absoluteString]; 

GIF是创build的,因为我能够在UIImageView显示它,但是当我尝试保存它时,该方法返回成功(没有错误),但实际上并没有保存(返回NSURL * assetURLNSURL * assetURL ,不会出现在相机胶卷中)。

我怎样才能让我的GIF成功保存到相机胶卷?

**

解决scheme01:只保存现有的GIF文件到相机胶卷

**

据我了解你的问题。 您可以生成一个GIF文件,但不能保存,也可以查看到相机胶卷。

所以我使用现有的GIF文件附加了一个示例testing。

步骤01.我在应用程序文档目录中复制了一个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]]; 

步骤03:现在我将文件保存在媒体目录中:

 ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library writeImageDataToSavedPhotosAlbum:gifData metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) { NSLog(@"Success at %@", [assetURL path] ); }]; 

资产的URL是正确的。 现在你可以检查你的媒体目录。 你可以find保存的GIF图像。

玩的开心 :)


**

解决scheme02:创build并保存GIF到相机胶卷的演示

**

我克隆了一些解决scheme,以显示创build和保存GIF文件到相机胶卷。 你可以在github上下载并检查我的fork:

该演示通过拍摄2张或更多图像创build一个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] ); }]; 

}];

正如我在http://jitsik.com/wordpress/?p=208之前的解决scheme中提到的,它使用库

如何validation:

步骤01:运行演示项目。

步骤02:按照应用程序的指示添加2个图像,然后单击导出。

步骤03:现在检查相机胶卷,你会发现创build的gif。

以前:

GIF是专有格式,因此您需要第三方库来保存它。

检查以下链接: http : //jitsik.com/wordpress/?p=208

我发现问题是我无法从文件中实际获取GIF。 我从CGImageDestinationCreateWithURL切换到CGImageDestinationCreateWithData并使用CFMutableDataRef来保存CFMutableDataRef数据。 我不知道为什么,但这使得与writeImageDataToSavedPhotosAlbum工作保存到相机卷。

这是否已更新为与iOS 9一起使用,并且已弃用ALAssets? 我在PHPhotoLibrary中看不到类似的调用。