你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS中獲取零碎相冊中的圖片實例

iOS中獲取零碎相冊中的圖片實例

編輯:IOS開發綜合

本文引見了IOS中獲取零碎相冊中的圖片,在很多使用中都能用到,可以獲取單張圖片,也可以同時獲取多張圖片,廢話不多說了,看上面吧。

一.獲取單張圖片

思緒:

1.應用UIImagePickerController可以從零碎自帶的App(照片\相機)中取得圖片

2.設置代理,恪守代理協議

留意這個UIImagePickerController類比擬特殊,需求恪守兩個代理協議

@interface ViewController () <UIImagePickerControllerDelegate, UINavigationControllerDelegate>

3.完成代理的辦法didFinishPickingMediaWithInfo

- (void)getImageFromIpc
{
  // 1.判別相冊能否可以翻開
  if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) return;
  // 2. 創立圖片選擇控制器
  UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
  /**
   typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {
   UIImagePickerControllerSourceTypePhotoLibrary, // 相冊
   UIImagePickerControllerSourceTypeCamera, // 用相機拍攝獲取
   UIImagePickerControllerSourceTypeSavedPhotosAlbum // 相簿
   }
   */
  // 3. 設置翻開照片相冊類型(顯示一切相簿) 
  ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
  // ipc.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
  // 照相機
  // ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
  // 4.設置代理
  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];

  // 設置圖片
  self.imageView.image = info[UIImagePickerControllerOriginalImage];
}

二.獲取多張圖片

思緒:

導入頭文件#import <Photos/Photos.h> PHAsset : 一個資源, 比方一張圖片\一段視頻 PHAssetCollection : 一個相簿 PHImageManager 圖片管理者,是單例,發送懇求才干從asset獲取圖片 PHImageRequestOptions圖片懇求選項 留意:這個類是IOS8開端推行,IOS9開端廢棄之前的辦法 零碎適配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);
    }];
  }
}

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支持本站。

【iOS中獲取零碎相冊中的圖片實例】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved