如何从 PHAsset 获取原始图像和媒体类型?

2023-12-07

My **GMImagePickerController**返回从照片应用程序中选择的图像的列表。

代码如下。

  - (void)assetsPickerController:(GMImagePickerController *)picker  didFinishPickingAssets:(NSArray *)assetArray
     {
        NSLog(@"%@",assetArray);
        NSLog(@"GMImagePicker: User ended picking assets. Number of selected items is: %lu", (unsigned long)assetArray.count);
  }

assetArray返回结果是这样的,我从照片应用程序中选择了3张图像

 (
"<PHAsset: 0x7fa39e02e840> 1AEEF04A-F8AB-4019-AAB5- 2875CFD8F8E3/L0/001 mediaType=1/0, sourceType=1, (425x425), creationDate=2016-02-03 13:53:17 +0000, location=0, hidden=0, favorite=0 ",
"<PHAsset: 0x7fa39e02c840> 50489C13-55D0-4518-B290-B01B99D66996/L0/001 mediaType=1/0, sourceType=1, (425x335), creationDate=2016-02-03 13:53:08 +0000, location=0, hidden=0, favorite=0 ",
"<PHAsset: 0x7fa39e02c750> D0A466B2-9CF2-4FD9-A12F-07921A1D0E8F/L0/001 mediaType=1/0, sourceType=1, (425x365), creationDate=2016-02-03 13:53:04 +0000, location=0, hidden=0, favorite=0 "
 )

现在的问题是我想得到OriginalImage and mediaType从上面的结果将图像存储到文档目录中。 请帮我解决这个问题。


要检查媒体类型,您可以使用 Phaseset 的以下属性

if asset.mediaType == .image{
 //do anything for image asset

}else if asset.mediaType == .video{
 //do anything for video asset

}else if asset.mediaType == .audio{
 //do anything for audio asset
}

要从 PHAsset 获取原始图像,您可以执行以下操作:

let requestImageOption = PHImageRequestOptions()
requestImageOption.deliveryMode = PHImageRequestOptionsDeliveryMode.highQualityFormat

let manager = PHImageManager.default()
manager.requestImage(for: asset, targetSize: PHImageManagerMaximumSize, contentMode:PHImageContentMode.default, options: requestImageOption) { (image:UIImage?, _) in
        // process the original image
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 PHAsset 获取原始图像和媒体类型? 的相关文章

随机推荐

  • 如何找到与我的代码兼容的所有以前版本的 python

    我在 python 2 7 3 中创建了一个中型项目 包含大约 100 个模块 我希望找出我的代码与哪些以前版本的 python 例如 2 6 x 2 7 x 兼容 在公共领域发布我的项目之前 找到它的最简单方法是什么 我知道的解决方案 安
  • 使用索引作为键初始化对象数组[重复]

    这个问题在这里已经有答案了 我试图找出如何初始化一个对象数组 其中每个对象都以索引 i 作为其键 以 0 作为其值 下面的代码没有按预期工作 但我不明白为什么 我还是 Javascript 的初学者 在其他地方找不到答案 var n 10
  • 带有 Dagger Hilt 的 Android 动态功能模块

    我已经构建了一个动态功能模块示例 其中包含基于格子应用程序的片段 子组件和依赖组件 如果您想查看here是链接 现在 我正在尝试使用将其转换为 Dagger Hilt安卓官方文档 在核心模块中 即库模块 应用程序模块和动态功能模块依赖于 S
  • Kotlin 无法在 Android Studio 上运行

    所有 kotlin 文件都无法在我的 Android Studio 上显示 即使直接将java文件转换为koltin 也可以对其进行编辑 但它不会出现在项目文件树上 IDE 还表明它是反编译的 class 文件 我无法创建 Kotlin 文
  • 如何过滤除特定白名单之外的所有 HTML 标签?

    这是针对 NET 的 设置了 IgnoreCase 但未设置 MultiLine 通常我在正则表达式方面表现不错 也许我的咖啡因不足 用户可以输入 HTML 编码的实体 u i b h3 h4 br a img 允许自动关闭 和 无论有或没
  • 无法使用点布局(graphviz 作为库)

    我使用 graphviz v2 28 0 作为 C 应用程序中的库 并且我想使用点布局渲染图形 一切正常 直到我打电话给gvLayout context graph 点 输出以下错误的函数 Error Layout type dot not
  • Pygame 三角函数:跟随斜边?

    我的方法里有一个方法Enemy类称为huntPlayer 它需要一个玩家对象p 这里是 def huntPlayer self p if self dist2p lt 200 self hunting True if p x gt self
  • 将“排名”列添加到数据框中

    我有一个数据框 其中包含不同年份的不同项目的数量 df lt data frame item rep c a b c 3 year rep c 2010 2011 2012 each 3 count c 1 4 6 3 8 3 5 7 9
  • 使用递归二分算法检查字符是否在字符串中

    我目前正在 edx 上学习编程课程 我的说明如下 使用二分搜索的思想 编写一个递归算法 检查字符串中是否包含字符 只要字符串按字母顺序排列即可 我的代码 python 2 7 在这里 def isitIn char aStr m aStr
  • 从其他程序集实例化 ResourceDictionary xaml

    我在包含颜色和画笔的 WPF 类库中定义了一个资源字典 称为 Brush Resources xaml
  • 事务标记为仅回滚:如何查找原因

    我在 Transactional 方法中提交事务时遇到问题 methodA methodB Transactional methodB em persist em flush log OK 当我从 method 调用 method 时 该方
  • POST 请求上的 GAE Soft 私有内存限制错误

    我正在开发一个使用 Google 应用程序引擎付费服务的应用程序 在应用程序中 我正在解析一个大型 xml 文件并尝试将数据提取到数据存储区 但是在执行此任务时 GAE 向我抛出如下错误 我还尝试通过将前端实例类从 F1 增加到 F2 来更
  • 使用 VBA 从 Excel 2010 查找并替换 Powerpoint 2010 中的文本

    我成功地在 powerpoint odule 中使用了这段代码 但是当我将其移动到我的 excel 模块中时 它给我带来了几个问题 我在 Excel 的第 1 页上嵌入了 Powerpoint 应用程序 目标是从 Excel 生成 Powe
  • 如何在 Node.js / EJS 中单击按钮时触发 Firebase POST 请求

    EDIT 实际上仍然存在一些问题 真正的问题实际上是 Firebase 安全规则 一切都在这里解决了 如何将 Node js 变量放入我的 中 问题 单击 Downvote Button 的 Upvote Button 时如何触发Fireb
  • Laravel (HasMany) 不检索值

    我有以下型号 namespace App use Illuminate Database Eloquent Model class forum category extends Model protected table forum cat
  • 通过Delphi传递SQL Server存储过程参数名称

    我是 Delphi 的新手 正在尝试找到调用 SQL Server 中的一些存储过程的方法 这是我目前正在使用的代码 它有效 FConnection TADOConnection Create nil FMetaDataSP TADOSto
  • 加密脚本中的 MySQL 流量

    我需要能够加密从 Web 服务器到数据库服务器的 MySQL 流量 我知道如何根据 my cnf 中的服务器和客户端设置将 MySQL 设置为使用 SSL 但是 这需要使用 PHP 中的 mysql connect 来完成 这可能是一个由两
  • python 字节数组中的“&”代表什么

    符号是什么意思 意思是在Python的末尾bytearray e g x w bytearray b x00 x00 x04 x12 xaa x12 x12 当将其转换为整数时 int from bytes x w little Out 1
  • 如何增加长时间运行的查询的执行超时?

    在我的应用程序中 执行一个查询需要 3 分钟 我找到默认 ExecutionTimeout 值为 110 秒 我尝试将其更改为 500 秒 但它没有解决我的问题 我在某个地方找到了这个设置
  • 如何从 PHAsset 获取原始图像和媒体类型?

    My GMImagePickerController 返回从照片应用程序中选择的图像的列表 代码如下 void assetsPickerController GMImagePickerController picker didFinishP