使用 Photos Framework 获取相机拍摄的照片的 URL

2023-12-27

我有一个应用程序使用UIImagePickerController从相机和照片库中检索照片。 在图像选择器委托中,我只想保存 NSURL (UIImagePickerControllerReferenceURL) 选取的图像以节省内存。当用户稍后需要查看图像时,我直接从照片库中使用 PHCachingImageManager 加载它。

现在,这一切对于用户从库中选择的图片非常有效,但对于相机直接拍摄的图片则不起作用(因为没有 URL)。我目前正在尝试保存图片PHAsset,但我不知道如何获取保存图片的NSURL。

这就是我一直在做的事情:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
{
    picker.dismissViewControllerAnimated(true, completion: nil)

    let pickedImage = info[UIImagePickerControllerOriginalImage] as! UIImage

    if picker.sourceType == .Camera
    {
        // When taking a picture with the camera, store it in the user roll
        PHPhotoLibrary.sharedPhotoLibrary().performChanges(
            { () -> Void in

                // save the image
                PHAssetCreationRequest.creationRequestForAssetFromImage(pickedImage)

                // TODO how to get the asset url

            }, completionHandler:
            { (finished, error) -> Void in
                if (finished)
                {

                }
            }
        )

    }
    else
    {
        let pickedImageUrl: NSURL? = info[UIImagePickerControllerReferenceURL] as? NSURL

        currentImageUrl = pickedImageUrl

        currentImage = pickedImage

        toggleImageInfoView(true)
        toggleMapState(true)
    }


}

有什么想法如何获取已保存图片的网址吗?

最好的, 格奥尔格


更新:似乎我找到了这个问题的答案。

第 1 步:我将图像保存到相机中

UIImageWriteToSavedPhotosAlbum(image.image, self, #selector(cameraImageSavedAsynchronously), nil)

这是异步完成的,因此请确保在操作完成时设置选择器。

第 2 步:操作完成后,我执行以下操作:

func fetchLastImage(completion: (localIdentifier: String?) -> Void)
{
    let fetchOptions = PHFetchOptions()
    fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
    fetchOptions.fetchLimit = 1

    let fetchResult = PHAsset.fetchAssetsWithMediaType(.Image, options: fetchOptions)
    if (fetchResult.firstObject != nil)
    {
        let lastImageAsset: PHAsset = fetchResult.firstObject as! PHAsset
        completion(localIdentifier: lastImageAsset.localIdentifier)
    }
    else
    {
        completion(localIdentifier: nil)
    }
}

我使用 PHAsset 获取相机胶卷中的最后一张图像并保存图像的本地标识符。这不是一个 URL,而是一个不会改变的唯一标识符。这样,您就可以完美地访问保存的图像。

希望这对其他人有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Photos Framework 获取相机拍摄的照片的 URL 的相关文章

  • 将 UITableViewDataSource 与具有子视图的自定义单元格结合使用

    在 UITableView 中使用自定义单元格时 我遇到了奇怪的表格重叠 Problem 向下滚动 最后两行上面画有顶部两行 向上滚动 前两行上面画有下面两行 这是 UITableViewDataSource 的代码 func tableV
  • Swift - 本地通知不会被触发

    我正在 Swift 3 中编码 我只是想发送通知now没有任何延迟或间隔 然而 通知永远不会被触发 这是我的代码 视图控制器代码 import UserNotifications class HomeViewController UIVie
  • CLLocation Manager如何在一定距离后更新

    我正在使用 CLLocationManager didupdatelocations 如下所示 func locationManager manager CLLocationManager didUpdateLocations locati
  • 在 Android 上使用 opus 剪辑从 IOS 发送的声音

    我正在 IOS 中从 audioUnit 录制音频 用 opus 编码字节并通过 UDP 将其发送到 android 端 问题是播放的声音有点削波 我还通过将原始数据从 IOS 发送到 Android 来测试声音 效果非常完美 我的 Aud
  • tableView.dequeueReusableCellWithIdentifier() 导致应用程序挂起

    原帖 我们最近将我们的应用程序转换为 Swift 2 0 和 iOS9 我看到的一个奇怪的问题是调用 tableView dequeueReusableCellWithIdentifier 会导致应用程序挂在模拟器中 The code fu
  • 删除 UICollectionView 中的最后一个单元格会导致崩溃

    您好 我正在使用自定义 UICollectionView https github com SureCase WaterfallCollectionView https github com SureCase WaterfallCollec
  • 如何在 iOS 上压缩 Realm DB?

    我想定期压缩 iOS 上的 Realm 实例以回收空间 我认为该过程是将数据库复制到临时位置 然后将其复制回来并使用新的default realm 文件 我的问题是Realm 其行为就像单例并回收对象 因此我无法真正关闭它并告诉它打开新的
  • 当应用程序退出活动状态时,MPMovies PlayerViewController 被解雇

    当我将 iPhone 设置为睡眠状态 切换到另一个应用程序等 然后再次返回时 之前的可见内容MPMoviePlayerViewController 提出与presentMoviePlayerViewControllerAnimated 已经
  • 检查定位服务是否开启

    我一直在对 CoreLocation 进行一些研究 最近 我遇到了一个在其他地方 但在 Objective C 和 iOS 8 中 已经讨论过的问题 我觉得问这个问题有点傻 但是如何在 iOS 9 上使用 swift 检查是否启用了位置服务
  • 使用 iOS 8 自定义键盘发送图像?

    我一直在为 iOS 8 开发自定义键盘 但在尝试使用键盘发送图像时偶然发现了一个问题 我做了一些研究 似乎没有一种简单的方法可以做到这一点UITextDocumentProxy因为只有NSStrings被允许 我是否忽略了使用自定义键盘发送
  • 将永久字符添加到 UITextField

    有没有办法将字母永久添加到 UITextField 中 用户无法删除它 我想添加一个字符 用户无法删除它 但他们仍然可以在之后添加字母 Cheers 附注这是适用于 iOS 的 A UITextField有一个名为 应该更改范围内的字符 的
  • 从 UIImagePickerController 相机视图推送 viewController

    我正在开发一款消息应用程序 类似于 WhatsApp 用户可以互相发送文本和图像消息 当用户想要发送图像时 他可以从相机胶卷中选择一张图像 也可以用相机拍摄一张图像 这就是我介绍的方式UIImagePickerController对于这两种
  • 如何使用 NSUserDefaults 在 Swift 中存储自定义类的数组?

    我有一个名为的自定义类Person当某人输入信息时 它会存储有关某人的各种属性 class Person Person dictionary variable var name String var age String var html
  • 带操作按钮的颤动本地通知

    我在我的 flutter 项目中尝试了 flutter 本地通知插件 它在简单通知上工作正常 但我需要带有操作按钮的通知功能 请帮助我或建议我实现此功能 不幸的是 flutter local notifications 插件尚不支持操作按钮
  • 导入 RNCryptor 后架构 armv7 的未定义符号

    我导入了 RNCryptor 可以在这里找到 https github com rnapier RNCryptor https github com rnapier RNCryptor进入我的应用程序 但是 我在日志中收到了三个错误 Und
  • 是否可以使用 Firebase 安排推送通知? [复制]

    这个问题在这里已经有答案了 我已经阅读了我能找到的所有文档 但仍然不知道这是否可行 如果我是用户 我可以安排特定时间的推送通知吗 Example 1 我是用户并打开应用程序 2 我允许通知并转到 pickerView 或其他任何内容 并设置
  • 适用于 iPhone / iPad / iOS 的快速、精益 PDF 查看器 - 提示和提示?

    最近有很多关于绘制 PDF 的问题 是的 您可以使用UIWebView但这无法提供您所期望的优秀 PDF 查看器的性能和功能 您可以绘制PDF页面到 CALayer http www cocoabuilder com archive coc
  • 覆盖层不与 UITableView 一起滚动 - iOS

    我有一个 UITableView 类 它使用以下方法在转到下一个屏幕时调用加载覆盖 问题是这个加载屏幕不随列表滚动 所以如果你滚动一点并单击某些东西 加载屏幕不会显示 因为它位于顶部 如何让加载屏幕始终保持在 UITableView 的顶部
  • 如何使用 Swift 使用 TouchID?

    Apple 为 iOS 8 的 TouchID 实现提供的文档采用 Objective C 语言 有 Swift 版本吗 Objective C IBAction touchIDAvailable UIButton touchIDAvail
  • UIImageJPEGRepresentation 在视网膜显示屏上提供 2x 图像

    我有这段代码 它创建一个图像 然后向其添加一些效果并缩小其大小以使其largeThumbnail UIImage originalImage UIImage imageWithData self originalImage thumbnai

随机推荐

  • 使用接口将数据从片段/活动传递到片段/活动的命名技术

    在学校 我们现在正在学习如何通过使用接口使片段更加通用 这项技术仍然有点抽象 我真的不知道何时 如何使用它 任何人都可以向我指出一些有关如何使用该技术的资源 可以称为接口回调吗 非常感谢所有帮助 The 回调方法 正如你所说的 就像List
  • 如何按索引从可变参数模板参数包中提取值?

    我想写一个函数magic get 它可以通过索引从参数包中提取值 例如 int n 0 n magic get lt 0 gt 1 3 5 7 assert 1 n n magic get lt 1 gt 1 3 5 7 assert 3
  • Fusebox 在代码中调用保险丝

    有谁知道是否可以在冷融合模板中调用融合动作 您尚未指定哪个 Fusebox 版本 此答案适用于 Fusebox 5 x 你的标题和问题是在问两个不同的事情 保险丝和保险丝是两个不同的东西 熔断器只是一个 CFML 模板 而熔断器动作代表执行
  • cout 是否保证具有 ctype 方面?

    Given auto foo ABCDEFGHIJKLMNOPQRSTUVWXYZ s我可以通过以下方式将所有字符转换为小写 use facet
  • Powershell - 如何保持跨会话加载导入的模块

    我有一堆使用通用 Powershell 库的不同脚本 自定义 PS 函数和 C 类的混合 这些脚本会定期自动执行 当加载每个脚本时 它会使用相当多的 CPU 来导入自定义模块 当所有脚本同时启动时 服务器的 CPU 运行速度为 100 有没
  • Angular Js - 在标头默认设置令牌

    我试图将带有我的访问令牌的标头添加到每个 API 调用中 它适用于所有 GET 请求 但当我尝试发出 POST 时 不会添加标头 这是我添加令牌的方法 app factory api function http cookies return
  • Tomcat 8 使用 Redis 进行会话复制

    Tomcat 8上可以用redis实现会话复制吗 我无法找到 tomcat 8 的 redis 会话管理器 jar 有一个现成的解决方案提供Redisson https redisson org框架 基于 Redis 的内存数据网格 使用方
  • Mongodb 有内存模式吗? [复制]

    这个问题在这里已经有答案了 可能的重复 运行集成测试时嵌入 MongoDB https stackoverflow com questions 6437226 embedded mongodb when running integratio
  • autocrlf 和 eol 有什么区别

    我正在阅读git 文档 https git scm com docs gitattributes about gitattributes解决我的混合行结尾问题并发现有两个类似的设置 自动回车 行尾转换 虽然 Git 通常保留文件内容 它可以
  • 在哪里可以找到 kafka 的 Maven 存储库?

    我想尝试 kafka 0 8 据我所知它已经发布了 但是我在哪里可以找到kafka maven存储库 我应该添加什么额外的存储库 URL 我发现了一些博客
  • 如何在执行 ./configure 时设置 ccshared=-fPIC?

    我正在尝试构建 Python 2 6QGIS http en wikipedia org wiki Quantum GIS on RHEL http en wikipedia org wiki Red Hat Enterprise Linu
  • 在Java中:在目录中创建唯一的随机文件名

    如何在 我选择的 目录中创建随机唯一文件名 Note 我不希望此文件位于系统临时路径中 而是位于我指定的目录中 File createTempFile https docs oracle com javase 6 docs api java
  • 在 uiwebview 中播放 YouTube 视频。如何处理“完成”按钮?

    我有一个 uiwebview 可以播放 youtube 视频 我如何处理完成按钮操作 现在 当我点击 完成 按钮时 它会变回我的应用程序主菜单 而不是应该关闭的菜单 并且它会冻结 有人可以帮我吗 ps uiwebview所在的菜单 之前是模
  • GTK 中的免费对象/小部件?

    我的 GTK 应用程序中有一个包盒 我每隔一段时间就会用一个全新的条目替换它 至少现在是这样 因为我很着急 由于我要用新实例替换它 我是否需要显式地从内存中释放旧包盒内容 或者 GTK 中是否有一些垃圾收集 如果我确实需要明确需要释放对象
  • 如何创建SWIG接口文件?

    我是 SWIG 新手 而且做事的时间也少了 我正在尝试将 C 类绑定到 python 我已经在 Windows 中设置了 SWIG 并尝试运行它 成功了 我的 example i 文件就像 File example i module exa
  • 登录网站 cURL

    我是第一次使用 cURL 我需要登录一个网站 我在设置 cookie 文件和检索时遇到问题 这样我就可以访问该页面 而不仅仅是一次 而是多次 我在网上找到了代码 用于登录网站并废弃页面以获取一些详细信息 因为获取该页面需要很长时间 所以我只
  • MVP MVC 和 MVVM 之间的区别

    朋友们 我已经浏览了很多链接 博客 我发现他们中的大多数人都无法用外行语言清楚地沟通 也无法理解 MVP MVVM 和 MVC 之间的技术差异 我知道每个角色代表什么 并且也致力于 MVP 的制作 但如果有人问我同样的问题 我真的不明白 为
  • 如何在 Bokeh 绘图模块中使用 vbar 方法绘制分类条形图

    我希望在 Bokeh 绘图中使用 vbar 方法绘制条形图 其中 x 轴采用分类值而不是数值 教程页面中提供的示例 http docs bokeh org en latest docs reference plotting html htt
  • Hive-如何使用原始表中的分区“创建表作为选择..”?

    我需要从我们的 hive dlk 创建一个 工作表 虽然我可以使用 create table my table as select from dlk big table 很好 我在继承分区时遇到问题 属性day month and year
  • 使用 Photos Framework 获取相机拍摄的照片的 URL

    我有一个应用程序使用UIImagePickerController从相机和照片库中检索照片 在图像选择器委托中 我只想保存 NSURL UIImagePickerControllerReferenceURL 选取的图像以节省内存 当用户稍后