iPhone - 将 UIImage 添加到文件夹
Posted
技术标签:
【中文标题】iPhone - 将 UIImage 添加到文件夹【英文标题】:iPhone - Add UIImage to Folder 【发布时间】:2014-12-03 23:38:25 【问题描述】:我的 Xcode ios 应用中有一个名为 PhotoSet 的文件夹。我想将 UIImage 转换为 jpg 并将其放入文件夹中。这是我到目前为止所拥有的(顺便说一下,如果它完全相关,那么 UIImage 是从用户拍摄的照片中获取的):
NSData * imageData = UIImageJPEGRepresentation(chosenImage, 1.0);
if (imageData != nil)
[imageData writeToFile:@"/Users/Toly/Desktop/PhotoMap/PhotoMap/PhotoSet/test.jpg" atomically:YES];
我没有收到任何错误或警告。但是,没有图片被保存到任何文件夹中。我该怎么办?
【问题讨论】:
你认为你的iPhone有这样的目录结构吗(提示:没有)?您是否检查了对writeToFile:
的调用的返回值?您需要写入应用程序沙箱中的有效路径。做一些搜索。这已经在这里讨论过很多次了。
模拟器实际上应该将图像保存到桌面。
【参考方案1】:
您需要写入实际位于 iPhone 上的目录。大多数情况下,您会想要写入文档目录。你可以像这样得到它的路径:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
这为您提供了基本文档目录,如果您想将文件夹放在子目录中,您需要先创建该文件夹。
NSString *folderPath = [documentsDirectory stringByAddingPathComponent:@"myFolder/images"];
NSError *error = nil;
NSFileManager *fm = [[NSFileManager alloc] init]
[fm createDirectoryAtPath:folderPath withIntermediateDirectories:YES attributes:nil error:&error];
然后要将您的图像数据保存到该文件夹,您将执行以下操作
NSString *imageDataPath = [folderPath stringByAppendingPathComponent:@"myImage"];
BOOL success = [imageData writeToFile:imageDataPath];
此外,您可以对 imageDataPath 进行 NSLog 记录,它会为您提供保存文件的确切位置,以便您在使用 iOS 模拟器时导航到 finder 中的实际文件。
【讨论】:
【参考方案2】:您的手机不包含镜像文件“/Users/Toly/Desktop/PhotoMap/PhotoMap/PhotoSet/test.jpg”的数据结构
如果您希望图像保留在内存中,请尝试使用 nsuserdefaults、xcassets 或 Coredata。如果您绝对打算写入文件,请查看下面的 NSCoding 和 NSFileManager 教程:
http://www.raywenderlich.com/1914/nscoding-tutorial-for-ios-how-to-save-your-app-data
【讨论】:
不要使用NSUserDefaults
来持久化图像。将其写入文件。以上是关于iPhone - 将 UIImage 添加到文件夹的主要内容,如果未能解决你的问题,请参考以下文章