2

我有一个带有缩略图的自定义单元格,用户可以从他们的相册中选择。我知道将图像保存到 Core Data 会导致性能不佳,我应该使用文件系统。

任何人都推荐一些很好的教程。如果我不在那里存储图像,我应该在核心数据中存储什么。

我还将存储更大的图像,而不仅仅是缩略图。

4

3 回答 3

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;

尖端:

  • 避免重复名称,这样您就不会覆盖现有文件(不要担心您会收到警告)
  • 删除模型时记得删除照片
  • 构建与您的模型匹配的逻辑路径和文件夹结构,例如 - album.photo 应该有一个名为专辑的文件夹,您应该在其中存储文件,在您删除相册模型时提供帮助
于 2012-07-04T16:56:31.087 回答
2

您的核心数据数据库中应该有两个字段thumbnailPath::NSStringoriginalPathNSString

使用文件管理器,您可以在特定路径上创建缩略图和原始图像。所以您将拥有: ..../thumbs/myPicture_thumb.jpg 和 ..../originals/myPicture.jpg 然后您只需将这两个路径存储到您的核心数据数据库。

当您想显示其中一个时,您只需使用UIImage方法:imageWithContentsOfFile

就这样

于 2012-07-04T16:42:40.703 回答
1

您可以将图像存储Application Documents Folder在 CoreData 或 sqlite 中,并将图像的路径保存在。参考图像及其路径。

于 2012-07-04T16:42:04.453 回答