保存生成的GIF到相机胶卷?
谢谢阅读。 我用这个问题的方法创build了一个GIF:
通过iOS创build和导出animationgif?
我试图使用唯一的方法,似乎可以将非JPG / PNG图像保存到相机胶卷, ALAssetLibrary
的writeImageDataToSavedPhotosAlbum: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 * assetURL
为NSURL * 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中看不到类似的调用。