问题标签 [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 回答
634 浏览

ios - 无法使用 PhotoKit 从相册中获取请求的清晰图像

我正在使用 PhotoKit 来获取其中一个系统相册中的照片,如下所示:

然后在我的自定义辅助方法中:(void)loadImageFromPHAsset:(PHAsset *)asset,我有这个:

所以我有一系列图像,我将它们呈现在我的UICollectionViewCell

但是我得到的是这样的,很模糊,我怎么才能说清楚呢? 在此处输入图像描述

0 投票
1 回答
2015 浏览

ios - 使用 Photokit 编写带有元数据的照片

我目前正在使用 ALAsset 框架将图像从照片库保存到带有元数据的文档目录。我使用的代码是

我想将此代码转换为使用 Photo Kit。根据我的研究,我发现 Photo kit 处理写入的方式是

0 投票
1 回答
299 浏览

objective-c - 如何使用 photokit 上传视频?

在 iOS8 之前,我使用 ALAsset 并使用缓冲区获取 NSData 然后上传视频,如下所示;

那么,如何使用 PhotoKit 上传视频?如何获取视频数据?

0 投票
1 回答
352 浏览

ios - 创建后如何获得指向新 PHCollectionList(或 PHAssetCollection)的指针

我正在尝试创建一个照片“文件夹”并返回一个指向它的指针。这可能吗?以下是我到目前为止的代码。谢谢。

0 投票
0 回答
1852 浏览

ios - 获取智能相册时,fetchAssetCollectionsWithType的结果可以排序吗?

调用 fetchAssetCollectionsWithType 时,我可以轻松获得大多数集合类型的正确排序结果。例如:

我得到正确排序的所有专辑,如果我颠倒排序顺序,我会得到相反的结果。

当我对 PHAssetCollectionTypeSmartAlbum 执行相同操作时:

结果不会以特定的顺序返回,尽管每次都是相同的顺序。颠倒顺序或将排序描述符更改为“endDate”等其他内容对结果没有影响。我已经验证这些项目实际上具有这样的属性:

这会产生这样的日志:localizedTitle - 视频,估计计数 - 0 本地化标题 - 全景图,估计计数 - 0 本地化标题 - 延时,估计计数 - 0 本地化标题 - 慢动作,估计计数 - 0 本地化标题 - 突发,估计计数 - 0 本地化标题 - 收藏夹,估计计数- 0 本地化标题 - 所有照片,估计计数 - 0 本地化标题 - 隐藏,估计计数 - 0 本地化标题 - 最近添加,估计计数 - 0

有没有人让它正确排序?

我最终基本上将结果拉入一个数组并对其进行排序。我只是碰巧首先想要相机胶卷和收藏夹。

0 投票
3 回答
2858 浏览

ios - 确定 iOS 设备上可用的最大 PHAsset 图像大小

如何确定PHAssetiOS 设备上可用的最大图像尺寸,其中“可用”是指当前在设备上,不需要从 iCloud 照片库进行任何网络下载?

我一直在开发一个应用程序,其中一组缩略图显示在一个UICollectionView(很像照片应用程序)中,然后用户可以选择一个图像来查看它的全尺寸。如有必要,将从 iCloud 下载完整大小的图像。但是,我想向用户展示图像的最大可能版本,直到完整尺寸可用。

照片框架的工作方式相当奇怪:

在集合视图中,我使用186x186 像素(由于视网膜缩放而使尺寸加倍)PHCachingImageManager缓存(以及后来的请求)图像。targetSizeUICollectionViewCell

效果非常好,滚动速度非常快,并且在用图像填充单元格时没有延迟。检查返回图像的大小,它们都是大约 342x256 像素。那是在我的 iPhone 6 上启用了 iCloud 照片库并启用了“优化存储”,因此对于大多数图像来说,设备上只存储了小缩略图。

然而,奇怪的是,如果我随后请求任何图像的全尺寸(或更大)版本,无论是使用该选项PHCachingImageManager还是PHImageManager.defaultManager()使用该PHImageRequestOptionsDeliveryMode.Opportunistic选项,返回的第一张(低质量)图像是一个看起来很小的 60x45 像素邮票全屏显示太可怕了,直到最终下载完整尺寸的图像来替换它。

显然,设备上已经更大的缩略图 (342x256),因为它们刚刚显示在集合视图中!那么为什么在下载完整尺寸之前它不将它们作为第一个“低质量”图像返回?为了确保 342x256 图像确实已经在设备上,我在飞行模式下运行了代码,因此没有发生网络访问。

我发现,如果我请求任何最大为 256x256 的尺寸,我会返回 342x256 的图像。一旦我变大(甚至 1 像素),它首先会返回 60x45 图像,然后尝试下载完整尺寸的图像。

我已经更改了我的代码,首先发出一个 256x256 的请求,然后是一个完整尺寸的请求PHImageRequestOptionsDeliveryMode.HighQualityFormat(它不会返回一个微小的中间图像),而且效果很好。这也是 iOS 照片应用程序必须做的事情,因为它在下载完整图像时会显示相对高质量的缩略图。

那么,在这样的背景下,我怎么知道设备图像的最大尺寸是PHAsset多少?256x256 是一个神奇的数字,还是取决于 iCloud 照片库如何优化空间(基于库的大小和可用的设备存储空间)?

当然,这似乎是一个错误,照片框架没有返回当前可用的最大图像(当被要求提供比当前更大的尺寸时),并且要获得最大尺寸,您必须要求该尺寸或更小,因为如果你要求更大,你会得到一个 60x45 的缩影!奇怪。

更新:提交给 Apple 的错误报告:https
://openradar.appspot.com/25181601 演示错误的示例项目:https ://github.com/mluisbrown/PhotoKitBug

0 投票
2 回答
2343 浏览

ios - 如何使用 PhotoKit 减少内存使用?

我正在使用PhotoKit从系统相册中获取照片并将它们放入UICollectionView.

  1. 对于UICollectionViewCell,我这样设置:

    /li>
  2. 初始化 my 时,我仅从:UICollectionView获取照片:PHAssetcollectionCamera Roll

    /li>
  3. UIImage然后我像这样从PHFetchResult上面请求:

    /li>

但是当我运行它并以足够快的速度滚动时UICollectionView,我发现内存使用变得像这样陡峭:

内存使用

如果内存不足时它会崩溃,我该如何减少它?

0 投票
1 回答
538 浏览

ios - 使用 PhotoKit 获取时无法将 UIImage 转换为 NSData

我的场景是,我使用 PhotoKit 从系统相册中选择一张照片并呈现在我的照片中UICollectionView,然后将所选照片 ( UIImage) 传递给我的下一张照片UIView,并将其以NSData. 但是当我在发送之前放置断点以跟踪时,NSData我发现UIImage有分配内存的数据而NSData没有。

这是获取的代码UIImage(请注意,我没有指定任何PHImageRequestOptions对象):

我将其转换UIImageNSData

当我跟踪变量时,UIImage包含的数据如下:

在此处输入图像描述

但是NSData如下nil

在此处输入图像描述

奇怪的是,如果我为请求图像指定一个PHImageRequestOptions对象,则不会是. 我不确定有没有改变了什么以及为什么会产生这样的差异。PHImageManagerNSDatanilPHImageRequestOptions

更新:我发现,如果您指定PHImageRequestOptionsnil那么默认选项将强制它异步获取照片,在我看来,这可能是不稳定的NSData,所以当我指定它时options.synchronous = YES;它会起作用。

但在这种情况下,它会导致任何保留周期或某些PhotoKit对象不会被释放吗?

0 投票
6 回答
46457 浏览

ios - 苹果实况照片文件格式

Apple 将在 iOS 9/iPhone 6s 中引入Live Photo 。文件格式记录在哪里?

0 投票
1 回答
512 浏览

ios - 从 PHCachingImageManager 获取固定大小的图像

我正在尝试从我的缩略图中获取缩略图,PHCachingImageManager以便我可以将它们放入imageViewUITableViewCell的 s.

我可以从日志中看到 AssetGridThumbnailSize = 80 x 80(40 x 40 视网膜):

缩略图大小:{80, 80}

我已经将 contentMode 设置为,PHImageContentModeAspectFill但是当我取回图像时,它们都是不同的大小,这使得UITableView看起来非常混乱。

如何PHCachingImageManager让我返回正确尺寸的图像?