是否可以在没有 PHAsset 的情况下将照片存储在 iPhone 上?

Posted

技术标签:

【中文标题】是否可以在没有 PHAsset 的情况下将照片存储在 iPhone 上?【英文标题】:Is it possible to get photos stored on the iPhone without PHAsset? 【发布时间】:2015-09-07 14:32:45 【问题描述】:

不使用 PHAsset 是否可以获取存储在 iPhone 上的照片?

这是因为 PHAsset 的使用迫使我使用这种方法:

PHImageManager.defaultManager().requestImageForAsset( ... )

而且这个方法需要时间来执行。

我只想直接从存储它们的文件夹中获取图像。

【问题讨论】:

可能违反了 API/SDK EULA。 需要多少时间,如果可以将图像加载为文件需要多少时间?读取几 MB 的数据通常需要超过 1 毫秒。 为了得到照片,我在第一篇文章中键入的方法的执行需要太多时间。我想要相机拍的照片。 “时间过多”是多少? 1 小时 1 秒 1 微秒? 多 1 秒,因为我想制作一个类似于 iPhone 上的照片应用程序视图的视图,即我们向右或向左滑动查看照片时的视图。当用户在照片之间滑动时,我开发的视图会震动。 【参考方案1】:

无法直接访问这些文件,因为它们不在您的应用程序的沙箱中。 什么需要时间,当你使用方法时

PHImageManager.defaultManager().requestImageForAsset( ... )

是文件被加载到内存中并解码为 UIImage。 为避免这种情况,请查看方法

PHImageManager.defaultManager(). requestImageDataForAsset( ... )

此方法将文件加载为 NSData。

注意:如果你想构建一个照片应用程序,用户可以在其中滑动照片,最好的策略可能是以下。

    预加载用户可能加载的图像(例如,在当前显示的一张照片之前和之后的一张照片) 使用PHCachingImageManager

    当用户滑动到实际图片使用时

    PHImageManager.defaultManager().requestImageForAsset( ... )

由于图像是预加载的,这应该会更快

另一种方法是首先加载较小的缩略图图像,然后延迟加载全屏图像。

【讨论】:

以上是关于是否可以在没有 PHAsset 的情况下将照片存储在 iPhone 上?的主要内容,如果未能解决你的问题,请参考以下文章

根据“人脸”元数据获取 PHAsset

是否可以在不存储卡的情况下将交易与客户联系起来?

javascript:在没有php的情况下将数据存储在文件或数据库中?

在不加载 PHAsset us 照片库的情况下获取所有图像本地标识符/文件路径

从 iOS 8 中的 PHAsset 获取文件扩展名?

是否可以在没有真实设备的情况下将其应用 TVOS 发送到 iTunes 连接?