我有一个带缩略图的自定义单元格,用户可以从他们的相册中选择。我知道将图像保存到Core Data会导致性能不佳,我应该使用文件系统。
任何人都会推荐一些很好的教程。如果我没有在那里存储图像,我应该在核心数据中存储什么。
我也将存储较大的图像,而不仅仅是缩略图。
答案 0 :(得分:4)
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:
答案 1 :(得分:2)
核心数据分析中应该有两个字段:thumbnailPath
:NSString
和originalPath
:NSString
使用文件管理器,您可以在特定路径创建缩略图和原始图像。所以你有:.... / thumbs / myPicture_thumb.jpg AND .... / originals / myPicture.jpg 然后,您只需将这两条路径存储到核心数据db中。
如果您要显示其中一个,请使用UIImage
方法:imageWithContentsOfFile
全部
答案 2 :(得分:1)
您可以将图像存储在Application Documents Folder
中,并在CoreData或sqlite中保存图像的路径。请参考图像及其路径。