我有一個自定義單元格與縮略圖圖像,用戶可以從他們的相冊中選擇。我知道將圖像保存到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,但這些都是凌亂和壞看... –