最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年11月07日 09:33:26   作者:船長_  
這篇文章主要介紹了iOS中獲取系統(tǒng)相冊中的圖片實例,具有一定的參考價值沒有需要的朋友可以了解一下。

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

一.獲取單張圖片

思路:

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

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

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

@interface ViewController () <UIImagePickerControllerDelegate, UINavigationControllerDelegate>

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

- (void)getImageFromIpc
{
  // 1.判斷相冊是否可以打開
  if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) return;
  // 2. 創(chuàng)建圖片選擇控制器
  UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
  /**
   typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {
   UIImagePickerControllerSourceTypePhotoLibrary, // 相冊
   UIImagePickerControllerSourceTypeCamera, // 用相機拍攝獲取
   UIImagePickerControllerSourceTypeSavedPhotosAlbum // 相簿
   }
   */
  // 3. 設(shè)置打開照片相冊類型(顯示所有相簿) 
  ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
  // ipc.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
  // 照相機
  // ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
  // 4.設(shè)置代理
  ipc.delegate = self;
  // 5.modal出這個控制器
  [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 : 一個資源, 比如一張圖片\一段視頻
  • PHAssetCollection : 一個相簿
  • PHImageManager 圖片管理者,是單例,發(fā)送請求才能從asset獲取圖片
  • PHImageRequestOptions圖片請求選項
  • 注意:這個類是iOS8開始推廣,iOS9開始廢棄之前的方法
  • 系統(tǒng)適配iOS8之前,用下面這個庫里面的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];
  }

  // 獲得相機膠卷
  PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].lastObject;
  // 遍歷相機膠卷,獲取大圖
  [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];
  }
  // 獲得相機膠卷
  PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].lastObject;
  [self enumerateAssetsInAssetCollection:cameraRoll original:NO];
}

3.遍歷相冊

/**
 * 遍歷相簿中的所有圖片
 * @param assetCollection 相簿
 * @param original    是否要原圖
 */
- (void)enumerateAssetsInAssetCollection:(PHAssetCollection *)assetCollection original:(BOOL)original
{
  NSLog(@"相簿名:%@", assetCollection.localizedTitle);

  PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
  // 同步獲得圖片, 只會返回1張圖片
  options.synchronous = YES;

  // 獲得某個相簿中的所有PHAsset對象
  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);
    }];
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

离岛区| 龙山县| 隆安县| 昭通市| 岑巩县| 济源市| 巩义市| 广平县| 盐亭县| 舞阳县| 民和| 余江县| 阿巴嘎旗| 贞丰县| 古田县| 滦南县| 江永县| 荥阳市| 改则县| 芦溪县| 巩留县| 浦东新区| 柯坪县| 穆棱市| 合川市| 花莲市| 武义县| 张家川| 霍林郭勒市| 会宁县| 高邑县| 土默特右旗| 德安县| 偃师市| 彭山县| 格尔木市| 海宁市| 平昌县| 仁布县| 碌曲县| 闽侯县|