一直對儲存和讀取影像感到恐懼,不過有機會來嘗試一下,就藉此突破心魔吧!其實還滿容易做到,行動裝置就好比一般電腦一樣!
程式碼功用是先建立路徑,我以Documents這個資料夾為起始點,想要在裡頭再產生1、2、3⋯⋯等資料夾,然後把影像分門別類塞到那些資料夾中。
儲存影像可以這麼寫:
//儲存檔案
// 設定序號
NSInteger serial = [[HMAppDelegate sharedAppDelegate].serial intValue] + 1;
// 建立資料夾
NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *targetDirectory = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%i", serial]];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:targetDirectory]) {
[fileManager createDirectoryAtPath:targetDirectory withIntermediateDirectories:YES attributes:nil error:nil];
}
UIImage *image = [[UIImage alloc] initWithCGImage:asset.defaultRepresentation.fullScreenImage];
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
NSString *imageNameFS = [NSString stringWithFormat:@"happy image.jpg"];
[imageData writeToFile:[targetDirectory stringByAppendingPathComponent:imageNameFS] atomically:YES];
讀取影像可以這麼做:
//讀取檔案
NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *targetDirectory = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%i", serial]];
NSString *imageNameFS = [NSString stringWithFormat:@"happy image.jpg"];
UIImage *imagex = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL fileURLWithPath:[targetDirectory stringByAppendingPathComponent:imageNameFS]]]];
想知道是否順利儲存影像,可以在模擬器上跑,列印出路徑變數,然後打開終端機,輸入指令:
open “/Users/happyman/Library/Application Support/iPhone Simulator/7.0/Applications/93BE4DBB-02C6-46DD-A9F5-188023F11929/Documents/1″
記得要在引號內貼上路徑,因為路徑可能會有空白。
刪除影像可以如此:
//刪除檔案
NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *targetDirectory = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%i", serial]];
NSString *imageNameFS = [NSString stringWithFormat:@"happy image.jpg"];
[[NSFileManager defaultManager] removeItemAtPath:[targetDirectory stringByAppendingPathComponent:imageNameFS] error:nil];
以下程式碼很神奇:
NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *targetDirectory = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"H/A/P/P/Y"]];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:targetDirectory]) {
[fileManager createDirectoryAtPath:targetDirectory withIntermediateDirectories:YES attributes:nil error:nil];
}
它會陸續幫我建立HAPPY五個層級的資料夾呢!關鍵在於withIntermediateDirectories要設YES!
註:我發現影像可以儲存成JPG和PNG,分別使用UIImageJPEGRepresentation(image, 1.0)和UIImagePNGRepresentation(image),後者可以儲存透明像素,前者若儲存有著透明像素影像,透明會變成白色喔!
參考:iOS 檔案寫入、讀取、刪除。



Comments on: "[iOS] 儲存與讀取影像檔" (1)
如果我要儲存影像的時候,檔案名稱已經存在的話會覆蓋過去嗎?
讚讚