我有一个自定义单元格与缩略图图像,用户可以从他们的相册中选择。我知道将图像保存到Core Data会导致性能下降,我应该使用文件系统。iPhone保存图像
任何人都会推荐一些很好的教程。如果我没有将图像存储在核心数据中,我应该如何存储核心数据。
我将存储较大的图像,而不仅仅是缩略图。
我有一个自定义单元格与缩略图图像,用户可以从他们的相册中选择。我知道将图像保存到Core Data会导致性能下降,我应该使用文件系统。iPhone保存图像
任何人都会推荐一些很好的教程。如果我没有将图像存储在核心数据中,我应该如何存储核心数据。
我将存储较大的图像,而不仅仅是缩略图。
UIImage*image = [UIImage imageNamed:@"the image you wish to save.jpg"];
//build the path for your image on the filesystem
NSArray *dirPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsDir = [dirPath objectAtIndex:0];
NSString* photoName = @"imageName.jpg";
NSString *photoPath = [docsDir stringByAppendingPathComponent:photoName];
//get the imageData from your UIImage
float imageCompression = 0.5;
NSData *imageData = UIImageJPEGRepresentation(image, imageCompression);
//save the image
if(![imageData writeToFile:path atomically:YES]){
return FALSE;
}
//store the imagePath to your model
photoModal.filePathImage = photoPath;
TIPS:
您可以将图像存储在Application Documents Folder
中,并将图像的路径保存在CoreData或sqlite中。参考图片及其路径。
你应该有自己的核心数据DB两个领域:thumbnailPath
:NSString
和originalPath
:NSString
随着你在特定路径创建缩略图和原始图像文件管理器。所以你将有:..../thumbs/myPicture_thumb.jpg AND ..../originals/myPicture.jpg然后,你只需将这两条路径存储到你的核心数据分贝。
当你婉显示他们中的一个,你中庸之道使用UIImage
方法:imageWithContentsOfFile
这是所有
谢谢,我会尝试 – Vikings
关于避免重复图像名称的任何建议,使它们独一无二 – Vikings
我发现的最佳方式是通过添加像globalApp模型或NSUserDefaults这样的持久位置的计数器来创建多少照片,然后可以将这个数字添加到每个文件名。 –
第二个选项是为每张照片生成一个唯一的ID,但这些都是凌乱和坏看... –