iPhone保存图像

时间:2012-07-04 16:36:36

标签: iphone objective-c ios

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

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

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

3 个答案:

答案 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:

  • 避免使用重复的名称,因此您不要覆盖exisitng文件(不要担心会收到警告)
  • 请记住在删除模型时删除照片
  • 构建与您的模型匹配的逻辑路径和文件夹结构,例如 - album.photo应该有一个名为album的文件夹,其中应该存储文件,在删除相册模型时有帮助

答案 1 :(得分:2)

核心数据分析中应该有两个字段:thumbnailPathNSStringoriginalPathNSString

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

如果您要显示其中一个,请使用UIImage方法:imageWithContentsOfFile

全部

答案 2 :(得分:1)

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