美文网首页iOS Developer
Photos 获取设备相册数据⑤

Photos 获取设备相册数据⑤

作者: 三分慢先森 | 来源:发表于2016-11-08 15:12 被阅读92次

(Swift)
第一步准备:

import Photos    //导入Photos库
PHPhotoLibraryChangeObserver    //签订协议
func photoLibraryDidChange(changeInstance: PHChange) {}  //实现协议方法,第一次获取相册信息时进入(可在其中调用第二步)

第二步获取:

//  注册通知
  PHPhotoLibrary.sharedPhotoLibrary().registerChangeObserver(self)
//  获取所有系统图片信息集合体
  let allOptions = PHFetchOptions()
//  对内部元素排序(根据key可以看出这里是按照时间由远到近排序)
  allOptions.sortDescriptors = [NSSortDescriptor.init(key: "creationDate", ascending: true)]
//  将元素集合拆解开,此时 allResults 内部是一个个的PHAsset单元
  let allResults = PHAsset.fetchAssetsWithOptions(allOptions)
// 遍历 allResults , 将视频和图片数据分开
  for i in 0..<allResults.count
  {
      let asset:PHAsset = allResults[i] as! PHAsset
      ........        //  根据 asset.mediaType 属性将asset进行分类
  }

下面这几个方法的执行环境 : asychronously on the main thread (主线程异步执行)
可先设置默认的 image 和 size 。

设置图片的 image 和 size :

 // libraryArrPhotos 设备相册中的图片数组
PHCachingImageManager.defaultManager().requestImageForAsset(libraryArrPhotos[indexPath.row] , 
                    targetSize: CGSizeZero, contentMode:
                    .AspectFit, options: nil)
    { (result: UIImage?, dictionry: Dictionary?) in   
           // 获取图片
           cell.cellImage.image = result 
    }

PHCachingImageManager.defaultManager().requestImageDataForAsset(libraryArrPhotos[indexPath.row], options: nil, resultHandler:
     { (data, string, orientation, object) in
            //  获取图片的大小(单位为B)
            var imageSize = Float(data!.length)    
      })
```
**设置视频的 image 和 size :**
```
 // libraryArrVedios 设备相册中的视频数组
PHCachingImageManager.defaultManager().requestImageForAsset(libraryArrVedios[indexPath.row] , targetSize: CGSizeZero, contentMode:
                    .AspectFit, options: nil)
      { (result: UIImage?, dictionry: Dictionary?) in
             // 获取视频截图       
             cell.cellImage.image = result 
      }

PHCachingImageManager.defaultManager().requestAVAssetForVideo(asset, options: nil, resultHandler:
       { (asset, audioMix, info) in
             //  获取视频的大小(单位为B)
             let urlAsset = asset as! AVURLAsset
             let data = NSData.init(contentsOfURL: urlAsset.URL)
             let size = data?.length
       }
```

相关文章

  • Photos 获取设备相册数据⑤

    (Swift)第一步准备: 第二步获取: 下面这几个方法的执行环境 : asychronously on the ...

  • iOS 视屏压缩

    iOS 8.0 相册使用的新的框架 Photos。 一、获取权限 二、获取视屏元数据 PHFetchResult ...

  • iOS 小知识7

    Photos type 记录 获取相册数据时,媒体类型以及子类型记录 PHAssetCollectionType ...

  • PHPhotoLibrary操作

    导入系统库头文件 : import 1.获取对应名称的相册 2.沙盒视频写入相册

  • 获取相册视频并保存到指定路径

    需要用到两个系统框架 Photos/Photos.h 用来获取系统的相册信息 AVFoundation/AVFou...

  • iOS之Photos/Photos.h库获取系统相册

    在iOS11中使用了系统photos库获取本地相册,可以先获取相册名再获取具体照片,同时可以访问系统分类相册和用户...

  • 自定义相册逻辑

    Photos.framework的使用理解 PHPhotoLibrary 是一个资源库。能够获取相册权限以及对相册...

  • Photos框架快速了解

    Photos是iOS 8以上可使用的框架,通过此框架可以获取用户相册图片、livephoto、vidio下面是常用...

  • Media层之图形技术

    媒体层提供了图形、音频和视频技术支持,以达到移动设备上多媒体体验。 图形框架 相册管理框架 photos iOS...

  • iOS:<Photos/Photos.h>获取相册视

    因为项目的需求,要捕获相册中的视频与图片,之前也对之尚未做过什么探讨,仅知道iOS8.0后,苹果推出了新的相册管理...

网友评论

    本文标题:Photos 获取设备相册数据⑤

    本文链接:https://www.haomeiwen.com/subject/qtbauttx.html