將圖片儲存到Documents資料夾裡
阿新 • • 發佈:2019-02-12
// 裝置的圖片庫 所有同步到iphone的影象 以及包括使用者拍攝的圖片在內的任何相簿 //UIImagePickerControllerSourceTypeSavedPhotosAlbum 僅含相簿 //UIImagePickerControllerSourceTypeCamera 允許使用者使用iPhone內建的攝像頭拍照 #define SOURCETYPE UIImagePickerControllerSourceTypePhotoLibrary #define DOCSFOLDER [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] - (id) init { if (!(self = [super init])) return self; // Attempt to use a Photo Library browser 嘗試使用一個圖片庫瀏覽器 if ([UIImagePickerController isSourceTypeAvailable:SOURCETYPE]) self.sourceType = SOURCETYPE;//isSourceTypeAvailable 檢查制定源是否可用 self.delegate = self; return self; }
//下面的這個函式是將檔案儲存到資料夾裡 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage: (UIImage *)image editingInfo:(NSDictionary *)editingInfo { //找到一個獨特的路徑名稱,一個空的檔案 //stringByAppendingPathComponent 從頂層資料夾中載入一個名為selectedImage.png 的檔案 int i = 0; NSString *uniquePath = [DOCSFOLDER stringByAppendingPathComponent:@"selectedImage.png"]; while ([[NSFileManager defaultManager] fileExistsAtPath:uniquePath]) uniquePath = [NSString stringWithFormat:@"%@/%@-%d.%@", DOCSFOLDER, @"selectedImage", ++i, @"png"]; printf("Writing selected image to Documents folder\n"); [UIImagePNGRepresentation(image) writeToFile: uniquePath atomically:YES]; //UIImageJPEGRepresentation 帶有兩個引數 影象和範圍0.0(最大壓縮)到1.0(最小壓縮) //而UIImagePNGRepresentation後面僅代有一個影象 //要將一個圖片寫到一個檔案上用writeToFile:atomically:這可將圖片存出到指定的目錄下將第二個引數 //設為YES確保整個資料夾在被放到目錄中之前獲得寫操作 保證你不必處理部分寫操作帶來的後果 //每個UIImage都可將自身轉化為JPEG後PNG資料 這兩個內建UIKit函式從UIImage例項生成必需的NSData [self popToRootViewControllerAnimated:YES]; //[self setNavigationBarHidden:YES animated:YES]; // 剛開始的時候顯示 點選圖片返回後沒有了導航欄 /*pushViewController:viewController animated:BOOL (載入檢視控制器)– 新增指定的檢視控制器並予以顯示,後接:是否動畫顯示 popViewControllerAnimated:BOOL (彈出當前檢視控制器)– 彈出並向左顯示前一個檢視 popToViewController:viewController animated:BOOL (彈出到指定檢視控制器)– 回到指定檢視控制器, 也就是不只彈出一個 popToRootViewControllerAnimated:BOOL (彈出到根檢視控制器)– 比如說你有一個“Home”鍵,也許就會實施這個方法了.回到根檢視控制器那裡 setNavigationBarHidden:BOOL animated:BOOL (設定導航欄是否顯示)– 如果你想隱藏導航欄,這就是地方了。參照Picasa的WebApp樣式*/ }
//點選cancel健時 要引發的事件
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
printf("User cancelled\n");
[self popToRootViewControllerAnimated:YES];
}
如果把上面兩個函式中的的[self popToRootViewControllerAnimated:YES]; 改為[[self parentViewController]
dismissModalViewControllerAnimated:YES];
則使用者就可以選擇編輯影象啦
再有下面的這兩個函式
- (void) snap
{
[self presentModalViewController:[[HelloController alloc] init] animated:YES];
}
- (void) loadView
{
[super loadView];
UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
contentView.backgroundColor = [UIColor whiteColor];
self.view = contentView;
[contentView release];
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc]
initWithTitle:@"Select"
style:UIBarButtonItemStylePlain
target:self
action:@selector(snap)] autorelease];
self.title = @"Image Picker";
}