IOS UIImagePickerController從拍照、圖庫(kù)、相冊(cè)獲取圖片
IOS UIImagePickerController從拍照、圖庫(kù)、相冊(cè)獲取圖片
iOS 獲取圖片有三種方法:
1. 直接調(diào)用攝像頭拍照
2. 從相冊(cè)中選擇
3. 從圖庫(kù)中選擇
UIImagePickerController 是系統(tǒng)提供的用來(lái)獲取圖片和視頻的接口;
用UIImagePickerController 類來(lái)獲取圖片視頻,大體分為以下幾個(gè)步驟:
1. 初始化UIImagePickerController 類;
2. 設(shè)置UIImagePickerController 實(shí)例的數(shù)據(jù)來(lái)源類型(下面解釋);
3. 設(shè)置設(shè)置代理;
4. 如果需要做圖片修改的話設(shè)置allowsEditing =yes。
數(shù)據(jù)來(lái)源類型一共有三種:
enum { UIImagePickerControllerSourceTypePhotoLibrary ,//來(lái)自圖庫(kù) UIImagePickerControllerSourceTypeCamera ,//來(lái)自相機(jī) UIImagePickerControllerSourceTypeSavedPhotosAlbum //來(lái)自相冊(cè) };
在用這些來(lái)源的時(shí)候最好檢測(cè)以下設(shè)備是否支持;
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { NSLog(@"支持相機(jī)"); } if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { NSLog(@"支持圖庫(kù)"); } if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]) { NSLog(@"支持相片庫(kù)"); }
調(diào)用攝像頭來(lái)獲取資源
- (void)viewDidLoad { [super viewDidLoad]; picker = [[UIImagePickerController alloc]init]; picker.view.backgroundColor = [UIColor orangeColor]; UIImagePickerControllerSourceType sourcheType = UIImagePickerControllerSourceTypeCamera; picker.sourceType = sourcheType; picker.delegate = self; picker.allowsEditing = YES; }
上面只是實(shí)例了UIImagePickerController及其屬性 在需要獲取圖片的時(shí)候需要彈出窗口調(diào)用
[self presentViewController:picker animated:YES completion:nil];
我們還需要代理來(lái)獲取我們選中的圖片
UIImagePickerControllerDelegate
代理中一共三個(gè)方法 其中一個(gè)3.0 已經(jīng)廢棄了,只剩下兩個(gè)我們需要用的
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;
當(dāng)用戶選取完成后調(diào)用;
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
當(dāng)用戶取消選取時(shí)調(diào)用;
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;
選取的信息都在info中,info 是一個(gè)字典。
字典中的鍵:
NSString *const UIImagePickerControllerMediaType ;指定用戶選擇的媒體類型(文章最后進(jìn)行擴(kuò)展) NSString *const UIImagePickerControllerOriginalImage ;原始圖片 NSString *const UIImagePickerControllerEditedImage ;修改后的圖片 NSString *const UIImagePickerControllerCropRect ;裁剪尺寸 NSString *const UIImagePickerControllerMediaURL ;媒體的URL NSString *const UIImagePickerControllerReferenceURL ;原件的URL NSString *const UIImagePickerControllerMediaMetadata;當(dāng)來(lái)數(shù)據(jù)來(lái)源是照相機(jī)的時(shí)候這個(gè)值才有效
UIImagePickerControllerMediaType 包含著KUTTypeImage 和KUTTypeMovie
KUTTypeImage 包含:
const CFStringRef kUTTypeImage ;抽象的圖片類型 const CFStringRef kUTTypeJPEG ; const CFStringRef kUTTypeJPEG2000 ; const CFStringRef kUTTypeTIFF ; const CFStringRef kUTTypePICT ; const CFStringRef kUTTypeGIF ; const CFStringRef kUTTypePNG ; const CFStringRef kUTTypeQuickTimeImage ; const CFStringRef kUTTypeAppleICNS const CFStringRef kUTTypeBMP; const CFStringRef kUTTypeICO;
KUTTypeMovie 包含:
const CFStringRef kUTTypeAudiovisualContent ;抽象的聲音視頻 const CFStringRef kUTTypeMovie ;抽象的媒體格式(聲音和視頻) const CFStringRef kUTTypeVideo ;只有視頻沒(méi)有聲音 const CFStringRef kUTTypeAudio ;只有聲音沒(méi)有視頻 const CFStringRef kUTTypeQuickTimeMovie ; const CFStringRef kUTTypeMPEG ; const CFStringRef kUTTypeMPEG4 ; const CFStringRef kUTTypeMP3 ; const CFStringRef kUTTypeMPEG4Audio ; const CFStringRef kUTTypeAppleProtectedMPEG4Audio;
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
CocoaPods 出現(xiàn)LoadError - cannot load such file -- nanaimo錯(cuò)誤解決
這篇文章主要介紹了CocoaPods 出現(xiàn)LoadError - cannot load such file -- nanaimo錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下2017-04-04iOS開(kāi)發(fā)之清除緩存功能的實(shí)現(xiàn)
現(xiàn)在的絕大多數(shù)應(yīng)用中都存在著清楚緩存的功能,形形色色,各有千秋,所以小編現(xiàn)為大家介紹一種最基礎(chǔ)的清除緩存的方法,有需要的可以參考借鑒。下面來(lái)一起看看吧。2016-09-09iOS判斷運(yùn)營(yíng)商類型的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇iOS判斷運(yùn)營(yíng)商類型的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04iOS開(kāi)發(fā)教程之UIRefreshControl使用的踩坑指南
UIRefreshControl是iOS6自帶的UITableView下拉刷新控件。下面這篇文章主要給大家介紹了關(guān)于iOS開(kāi)發(fā)教程之UIRefreshControl使用的踩坑指南,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04ios 11和iphone x的相關(guān)適配問(wèn)題及解決方法
這篇文章主要介紹了ios 11和iphone x的相關(guān)適配,文中給大家提到了在ios 11中,tableView會(huì)莫名偏移問(wèn)題的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11iOS實(shí)現(xiàn)自定義表單實(shí)例代碼
表單對(duì)大家來(lái)說(shuō)應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于iOS如何實(shí)現(xiàn)自定義表單的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04iOS開(kāi)發(fā)藍(lán)牙技術(shù)應(yīng)用增加無(wú)線連接功能
這篇文章主要為大家介紹了iOS開(kāi)發(fā)藍(lán)牙技術(shù)應(yīng)用增加無(wú)線連接功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02iOS開(kāi)發(fā)中實(shí)現(xiàn)顯示gif圖片的方法
這篇文章主要介紹了iOS開(kāi)發(fā)中實(shí)現(xiàn)顯示gif圖片的方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-09-09