国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > iOS > 正文

iOS中獲取系統(tǒng)相冊(cè)中的圖片實(shí)例

2020-07-26 03:06:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文介紹了iOS中獲取系統(tǒng)相冊(cè)中的圖片,在很多應(yīng)用中都能用到,可以獲取單張圖片,也可以同時(shí)獲取多張圖片,廢話不多說(shuō)了,看下面吧。

一.獲取單張圖片

思路:

1.利用UIImagePickerController可以從系統(tǒng)自帶的App(照片/相機(jī))中獲得圖片

2.設(shè)置代理,遵守代理協(xié)議

注意這個(gè)UIImagePickerController類比較特殊,需要遵守兩個(gè)代理協(xié)議

@interface ViewController () <UIImagePickerControllerDelegate, UINavigationControllerDelegate>

3.實(shí)現(xiàn)代理的方法didFinishPickingMediaWithInfo

- (void)getImageFromIpc{  // 1.判斷相冊(cè)是否可以打開(kāi)  if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) return;  // 2. 創(chuàng)建圖片選擇控制器  UIImagePickerController *ipc = [[UIImagePickerController alloc] init];  /**   typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {   UIImagePickerControllerSourceTypePhotoLibrary, // 相冊(cè)   UIImagePickerControllerSourceTypeCamera, // 用相機(jī)拍攝獲取   UIImagePickerControllerSourceTypeSavedPhotosAlbum // 相簿   }   */  // 3. 設(shè)置打開(kāi)照片相冊(cè)類型(顯示所有相簿)   ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;  // ipc.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;  // 照相機(jī)  // ipc.sourceType = UIImagePickerControllerSourceTypeCamera;  // 4.設(shè)置代理  ipc.delegate = self;  // 5.modal出這個(gè)控制器  [self presentViewController:ipc animated:YES completion:nil];}#pragma mark -- <UIImagePickerControllerDelegate>--// 獲取圖片后的操作- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{  // 銷毀控制器  [picker dismissViewControllerAnimated:YES completion:nil];  // 設(shè)置圖片  self.imageView.image = info[UIImagePickerControllerOriginalImage];}

二.獲取多張圖片

思路:

  • 導(dǎo)入頭文件#import <Photos/Photos.h>
  • PHAsset : 一個(gè)資源, 比如一張圖片/一段視頻
  • PHAssetCollection : 一個(gè)相簿
  • PHImageManager 圖片管理者,是單例,發(fā)送請(qǐng)求才能從asset獲取圖片
  • PHImageRequestOptions圖片請(qǐng)求選項(xiàng)
  • 注意:這個(gè)類是iOS8開(kāi)始推廣,iOS9開(kāi)始廢棄之前的方法
  • 系統(tǒng)適配iOS8之前,用下面這個(gè)庫(kù)里面的API
#import <AssetsLibrary/AssetsLibrary.h>

1.獲得所有相簿的原圖

- (void)getOriginalImages{  // 獲得所有的自定義相簿  PHFetchResult<PHAssetCollection *> *assetCollections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];  // 遍歷所有的自定義相簿  for (PHAssetCollection *assetCollection in assetCollections) {    [self enumerateAssetsInAssetCollection:assetCollection original:YES];  }  // 獲得相機(jī)膠卷  PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].lastObject;  // 遍歷相機(jī)膠卷,獲取大圖  [self enumerateAssetsInAssetCollection:cameraRoll original:YES];}

2.獲得所有相簿中的縮略圖

- (void)getThumbnailImages{  // 獲得所有的自定義相簿  PHFetchResult<PHAssetCollection *> *assetCollections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];  // 遍歷所有的自定義相簿  for (PHAssetCollection *assetCollection in assetCollections) {    [self enumerateAssetsInAssetCollection:assetCollection original:NO];  }  // 獲得相機(jī)膠卷  PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].lastObject;  [self enumerateAssetsInAssetCollection:cameraRoll original:NO];}

3.遍歷相冊(cè)

/** * 遍歷相簿中的所有圖片 * @param assetCollection 相簿 * @param original    是否要原圖 */- (void)enumerateAssetsInAssetCollection:(PHAssetCollection *)assetCollection original:(BOOL)original{  NSLog(@"相簿名:%@", assetCollection.localizedTitle);  PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];  // 同步獲得圖片, 只會(huì)返回1張圖片  options.synchronous = YES;  // 獲得某個(gè)相簿中的所有PHAsset對(duì)象  PHFetchResult<PHAsset *> *assets = [PHAsset fetchAssetsInAssetCollection:assetCollection options:nil];  for (PHAsset *asset in assets) {    // 是否要原圖    CGSize size = original ? CGSizeMake(asset.pixelWidth, asset.pixelHeight) : CGSizeZero;    // 從asset中獲得圖片    [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:size contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {      NSLog(@"%@", result);    }];  }}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 陆河县| 东至县| 博兴县| 东明县| 金山区| 柘荣县| 锡林浩特市| 兴海县| 沈阳市| 武定县| 金门县| 邯郸市| 和田市| 微博| 邮箱| 昭平县| 藁城市| 盐源县| 叙永县| 英山县| 汕头市| 铜陵市| 多伦县| 习水县| 三明市| 台北县| 怀远县| 云梦县| 资溪县| 奉新县| 郑州市| 宁国市| 庄河市| 基隆市| 卢湾区| 福贡县| 河池市| 汤阴县| 林甸县| 西贡区| 庆云县|