问题标签 [phassetcollection]

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 回答
1036 浏览

swift - 使用时刻检索 PHAsset 的性能

我目前正在将用户照片库构建到应用程序中。到目前为止,我只是在一个UICollectionView. 现在我想将矩簇添加为部分,类似于 iOS 照片应用程序。

我在做什么(有点简化):

事实证明,这比我以前做的更耗时 - 最多一分钟,而我的 iPhone X 大约需要 2 秒(有大约 15k 张图片的画廊)。显然,这是不可接受的。

为什么获取时刻的性能如此糟糕,我该如何改进它?我是否使用了错误的 API?

我尝试按需加载资产,但这非常困难,因为我必须处理估计的每分钟项目数,并在用户滚动时重新加载部分 - 我无法以令人满意的方式工作(平滑滚动,没有明显的重新加载)。

有什么帮助吗?这个 API 应该如何工作?我是不是用错了。

更新/部分解决方案

所以在玩了之后,事实证明以下是问题的很大一部分:我正在使用带有排序描述符的选项来获取资产:

似乎排序不允许 PhotoKit 使用它内部的索引或缓​​存。删除sortDescriptors速度显着加快。它仍然比以前慢,任何进一步的提示都值得赞赏,但这使得加载时间更容易忍受。

请注意,如果没有排序描述符,资产将首先返回最旧的资产,但这可以通过以相反的顺序检索资产来轻松手动修复cellForItemAt:(因此单元格0,0将获得第一时刻的最后一个资产)

0 投票
1 回答
371 浏览

ios - Swift iOS:-如何将 .livePhotos 排除在 PHFetchOptions 中?

在使用 时遵循@matt 的代码UIImagePicker,我可以防止用户在选择.livePhoto图像后使用:

使用 PHFetchOptions 时,如何防止它们被显示,而不是在 enumerateObjects 回调中过滤掉它们?

0 投票
1 回答
875 浏览

ios - 如何在 fetch PHAssetCollection 语句中获取“相机胶卷”、“视频”、“收藏夹”、“自拍”和“屏幕截图” - swift 4

我正在使用 Photo 框架并尝试获取 iPhone 上所有相册中的所有照片和视频。但问题是我无法获取所有专辑,包括“Camera Roll”“Videos”“Favorites”“Selfies”“Screenshots”其他带有fetchAssetCollections声明的专辑。我只取了别人的专辑。

我已经尝试了所有的albumand subtype,但它对我没有帮助。

这是我的代码:

我希望输出是所有专辑,包括“Camera Roll”“Videos”“Favorites”“Selfies”“Screenshots”其他专辑

0 投票
1 回答
444 浏览

nspredicate - Swift:如何获取除 Screenshots、Burst、Live 之外的所有照片(PHAsset)?

我想从照片库中获取除屏幕截图、连拍、实时照片之外的所有照片(PHAsset)。

我尝试使用下面的代码,但它返回屏幕截图、连拍、实时照片

0 投票
2 回答
886 浏览

swift - 在 iOS 13 智能相册中找不到相机胶卷相册

我遇到了一个问题。以前albums输入有15个smartAlbum,但随着,数字变成了。从那里消失了。这里获取相册的代码: AssetCollectioniOS 13iOS 1314Camera Roll

结果iOS 13

结果iOS 12

我的问题是:相机胶卷(所有照片)相册现在在哪里?我怎么才能得到它?

0 投票
1 回答
489 浏览

ios - 我们如何知道相册中是否已经存在图像?

我以编程方式创建了一张专辑。我想在添加新图像之前检查相册中是否已经存在图像。你可以检查下面的代码 CustomAlbum.shared.saveImage(image: UIImage()) 像这样保存图像。

使用此代码,我正在获取专辑的所有图像并与我要保存的图像进行比较。

0 投票
1 回答
144 浏览

swift4 - 从 PHAsset 问题中获取图像以检测图像的更新

我目前正在管理一个包含多张图片的 PHAsset(来自我的应用程序正在创建的相册),我可以毫无问题地显示它。对于我的 PHAsset 的每张图片,我正在计算我的应用程序中每张图片的哈希值。但是,如果我从我的应用程序中修改图片(例如,通过照片,我正在更改图片的颜色),如果我再计算一次哈希,我将无法检测到更新恢复我的应用程序时的 PHAsset 图片,未检测到更新,哈希值保持不变......

以下是从 PHAsset 获取图像的代码:

我在添加图片时使用此函数(计算哈希),当我需要检查 PHAsset 图片的哈希时,我正在使用检索 PHAssetCollection

但未检测到更改...可能我需要要求刷新 PHAssetCollection 以检索图片上的更改?我错过了什么吗?

为了清楚起见,我正在计算 Image 的哈希值,如下所示:

我假设一旦链接到 PHAsset 的图像被更改,我就能够检测到它的修改(我可以在我的应用程序屏幕上看到更新的图片,但计算的哈希值仍然相同)

0 投票
1 回答
508 浏览

swift - MacOS PhotoKit - 列出所有用户创建的智能相册?

我第一次开始玩 macOS 开发。我正在尝试查询我在 macOS 照片应用程序中创建的智能相册列表。正如您在此屏幕截图中看到的,我定义了 18 个智能相册和 1 个常规相册。

专辑截图

但是,当我获取 Smart Album 时,PHAssetCollection我看不到我定义的 Smart Albums。这是我用来获取照片总数、智能相册和普通相册的代码:

但是,当我运行此代码时,我看到以下输出,表明我的用户创建的智能相册没有被返回:

如您所见,我的正常专辑“我的测试专辑”被返回,但我创建的智能专辑都没有,例如 2008 年、2009 年等。我做错了什么吗?我需要额外的价值Info.plistNSPhotoLibraryUsageDescription?这是我第一次使用 PhotoKit 框架,所以我确定我可能会误解一些东西。但是,我认为这是一个非常简单的用例。我使用 Xcode 11.5 和 Swift 在 macOS Catalina 上运行它。

0 投票
0 回答
17 浏览

ios - Mac Catalyst 无法将图像保存在相册中,但不会产生错误

我正在将应用程序移植到 Catalyst。该应用程序有一个功能,可以在 Catalyst 环境中将屏幕截图保存到命名相册,在 iOS 环境中保存到相机胶卷。该代码运行良好,并产生一个没有错误的“成功”代码。如果我查看收藏的估计资产数量,每次尝试后它都会增加。但是,在“照片”应用中查看时,相册中没有内容。我的截图在哪里? 以下是相关代码:

专辑收藏来自:

0 投票
0 回答
35 浏览

ios - 如何从相机胶卷中获取仅使用设备相机(前后)拍摄的图像?(iOS)

我正在尝试获取仅使用设备摄像头(前后)捕获的图像,但我没有找到任何解决方案。我们可以使用“ smartAlbumSelfPortraits ”过滤前置摄像头图像,但不能过滤后置摄像头照片。是否有任何解决方案来加载使用设备相机捕获的图像?

注意:要求是,用户只想获取从他的 iPhone 捕获的图像。