问题标签 [photokit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
853 浏览

ios - 从实用程序调度队列使用 PhotoKit 的问题

我正在尝试在我的应用程序在前台运行时对资产进行后台处理,但我一直遇到主线程性能不佳和优先级反转问题的问题。我正在使用后台 QOS_UTILITY dispatch_async 调用。似乎即使我这样做了,它最终还是在调用 requestImageDataForAsset 期间回调到主线程中。

它看起来与底层 PhotoKit 库中的核心数据有关。看下面的主线程,所有的工作都应该在后台完成。每个地方都会调用“照片”。我在实用程序线程上放置了一个 dispatch_async。注意线程是如何从 QOS.UTILITY 反弹到 QOS.DEFAULT 然后到主队列的。

在来自 requestImageDataForAsset 的回调中,在制作完下面的清单后,我将它放回了回调中所需的队列中(第 19 行),但是 UI 性能仍然不好,因为主线程正在做太多的工作或等待。这是我最好的选择还是我可以做些什么来让 photokit 在我的后台线程上处理?

0 投票
2 回答
488 浏览

caching - iCloud 照片库 - 最初小于请求大小的图像的本地缓存

我们有点困惑设备缓存是如何工作的,以及它是如何工作的。原始分辨率小于请求中指定的图像似乎根本没有被缓存,每次我们调用 RequestImageForAsset 看起来图像总是从云中提取。当它发生时,它还显示了一个我们没有看到它记录的有趣行为。虽然 RequestImageForAsset 回调没有返回错误,但预期生成的 UIImage 为 nil。获取图像的唯一方法是使用更小的尺寸再次请求它。
显示此行为的照片显示在“照片应用程序”中,并带有一个白点。只有在通过双击强制放大后,该点才会消失,并且只有在那一刻之后,我们才能通过 RequestImageForAsset 正确请求它。

欢迎任何帮助

欢呼曼努埃尔

0 投票
1 回答
1679 浏览

photokit - PhotoKit:PHFetchOptions 中的 includeAllBurstAssets 不起作用

我正在尝试使用 PHFetchOptions 的 includeAllBurstAssets。在我的相机胶卷中,大约有 5 个连拍资产(每个都有大约 10 张照片)。

要枚举相机胶卷中的资产,我正在执行以下操作:

无论如何,如果我将 includeAllBurstAssets 属性设置为 NO 或 YES,我会得到完全相同的资产计数。如果 includeAllBurstAssets 设置为 YES,我预计这个数字会更高。这是一个错误还是我以错误的方式解释了 includeAllBurstAssets。

0 投票
0 回答
130 浏览

ios - PHAsset 的 iOS 位置:准确率始终为 0

我正在尝试使用 PhotoKit 从用户的照片库中提取位置信息。麻烦的是,所有 CLLocation 对象的水平精度为 0...

无论是 PHAssetCollection.approximateLocation.horizo​​ntalAccuracy 还是 PHAsset.location.horizo​​ntalAccuracy 都没有区别。

这些信息在我的用例中很重要,而且我知道在某些情况下准确度绝对是可怕的(误差半径超过 500 米)。

任何见解表示赞赏!

0 投票
2 回答
14534 浏览

ios - 仅从资产集合类型 PHAssetCollectionTypeSmartAlbum 中获取 PHAssetMediaTypeImage 类型的照片

我正在使用 Photos 框架来获取 iOS8 中的专辑列表。我可以使用

这给了我所有智能专辑的列表,包括视频。如何从此列表中过滤掉视频。我只需要图像。

帮助将不胜感激。谢谢。

0 投票
0 回答
784 浏览

ios - 设置 PHAssetChangeRequest 的位置属性不会在图像元数据中创建 GPS 部分

当拍摄照片(iOS 8.1)并调用 didFinishPickingMediaWithInfo 时,我正在尝试使用 PhotoKit 将 GPS 数据重新添加到元数据中。

这是我正在使用的代码:

该代码获取图像并将其移动到相册。这部分有效。照片最终出现在正确的相册中。

问题是即使位置属性设置正确,元数据中也不存在 GPS 数据。我知道位置数据是有效的。

这不应该工作吗?是否有替代方法来获得所需的结果?我并不关心所有其他元数据,只关心 GPS 坐标。

0 投票
3 回答
9497 浏览

ios - 如何使用 Photo Kit 获取专辑海报图片?

使用 Assets Library 时,您可以从 ALAssetsGroup 获取专辑的海报图片。使用照片框架(照片套件)时如何实现相同的效果?

0 投票
5 回答
1974 浏览

ios - 将元数据应用于图像会导致 performChanges 请求失败

我正在使用 PhotoKit 来编辑照片,我需要保留原始照片中的元数据。为此,我保存元数据,然后将其提供optionsCGImageDestinationAddImage. 我能够完成它并将其成功写入磁盘,但是当我调用performChanges提交资产编辑时,它失败了。如果我改为提供niloptions会成功。这里出了什么问题?

错误是:Error Domain=NSCocoaErrorDomain Code=-1 "The operation couldn’t be completed. (Cocoa error -1.)

0 投票
1 回答
1808 浏览

cocoa - 如何知道 PHAssetCollection 是否是最近删除的集合?

最近添加的集合有一个子类型:PHAssetCollectionSubtypeSmartAlbumRecentlyAdded. 但是,没有 assetCollectionSubtype可以识别“最近删除”的集合。

这是对我的“最近删除”集合的描述: (iOS 8.1.3): DF876BFD-...-C97F4628467C/L0/040 Recently Deleted assetCollectionType=2/1000000201

这表明它是 type PHAssetCollectionTypeSmartAlbum。但是 subtype 到底是1000000201什么?

201应该PHAssetCollectionSubtypeSmartAlbumPanoramas根据文档。

1000000201可以相信这个神奇的数字永远不会改变吗?可能不是。

但是,您可以通过以下方式检索最近删除的集合:

这张特殊的智能相册有一个主要区别:PHAssets 不能(再次)删除,因为这是垃圾箱。因此,必须知道是否应该向用户显示删除选项。

有人有想法吗?

0 投票
2 回答
11129 浏览

ios - 将图像保存在 url 时出现 PHPhotoLibrary 错误

我在由PHContentEditingOutput. 当我像这样加载数据UIImage并保存它时 - 它可以工作。

但是当我尝试使用 url 方法时它失败了:

错误:

Error Domain=NSCocoaErrorDomain Code=-1 “操作无法完成。(Cocoa 错误 -1。)”

更新:

当我尝试保存修改时出现同样的错误。

该方法适用于视频 ( creationRequestForAssetFromVideoAtFileURL:),但不适用于图像。什么地方出了错?