问题标签 [phasset]
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.
ios - 是否可以在没有警报视图的情况下从 iPhone 中删除照片?
我使用这种方法:
此方法的效果是将资产中包含的照片丢弃。但每次我这样做时,都会出现一个警告视图,上面写着“允许“应用程序”删除 x 张照片?” 出现
是否有禁用此警报视图的解决方案?或者用其他时刻出现的个人警报视图替换此警报视图?
ios - 确定 iOS 设备上可用的最大 PHAsset 图像大小
如何确定PHAsset
iOS 设备上可用的最大图像尺寸,其中“可用”是指当前在设备上,不需要从 iCloud 照片库进行任何网络下载?
我一直在开发一个应用程序,其中一组缩略图显示在一个UICollectionView
(很像照片应用程序)中,然后用户可以选择一个图像来查看它的全尺寸。如有必要,将从 iCloud 下载完整大小的图像。但是,我想向用户展示图像的最大可能版本,直到完整尺寸可用。
照片框架的工作方式相当奇怪:
在集合视图中,我使用186x186 像素(由于视网膜缩放而使尺寸加倍)PHCachingImageManager
来缓存(以及后来的请求)图像。targetSize
UICollectionViewCell
效果非常好,滚动速度非常快,并且在用图像填充单元格时没有延迟。检查返回图像的大小,它们都是大约 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
swift - 如果类型设置为专辑,PHAssetCollection fetchAssetCollectionsContainingAsset 返回 nil
我正在尝试通过资产访问 AssetCollection。执行代码时,照片框架返回 nil。仅供参考:资产是用 iPhone 相机点击的图片,因此,它存储在相机胶卷下。
77AF0C78-242A-4979-8A7B-7CFF04014C54/L0/001 致命错误:在展开可选值时意外发现 nil
如果我将类型更改为 Moment,问题就会消失。
Apple文档中的常量信息说:
相册 - 照片应用程序中的相册。相册可以在照片应用程序中创建,也可以通过 iTunes 同步出现在 iOS 设备上。
SmartAlbum - 内容动态更新的智能相册。照片应用程序显示内置智能相册以对某些类型的相关资产进行分组(请参阅资产集合子类型)。
时刻 - 照片应用程序中的时刻。照片应用程序会自动创建时刻以按时间和位置对资产进行分组。
这意味着相册下的相机胶卷不是相册而是片刻?我真的很困惑。
ios - 从用户照片库中获取最后一张照片,返回两张照片
使用以下代码时,它会获取我的最后一张图片,但会复制它。它总是得到最后一张图片,但它成对返回:
为什么会发生这种情况?以下是日志语句:
这发生在模拟器和设备上。不使用第 3 方软件,没关系,我想。为什么会被调用两次?我在 uialertaction 块中调用它
ios - “PHAssetCollectionSubtypeAlbumSyncedAlbum”不返回从 Mac 的照片同步的照片
我不知道如何将通过 iTunes 与 Mac 版照片同步到 iPhone 上的照片显示在基于 PHAsset 的交互中。
自专辑子类型以来,我都尝试过,但它不起作用。它只显示相机胶卷,以及由我拥有的应用程序创建的各种其他相册。
我在 8.x 和 9.x 上都试过了。有什么解决办法吗?
ios - iOS:在 PHAsset 的照片之间滚动时的扫视
我在 scrollViewDidScroll() 方法中放入了从 PHAsset 中提取图像以显示在视图上的方法。我对当前图像、上一个图像和下一个图像执行此操作。所以我每次加载 3 张图片。当我滚动时,我会破坏不使用的图像。
但是当我在视图之间滚动时,我有一点震动。我认为这是因为要显示的照片正在从 PHAsset 加载到我的视图中。
我能做些什么来解决这个问题?
这是我输入 scrollViewDidScroll() 方法时为照片收费的代码(页面是图像的编号):
ios - 是否可以在没有 PHAsset 的情况下将照片存储在 iPhone 上?
是否可以在不使用 PHAsset 的情况下获取存储在 iPhone 上的照片?
这是因为使用 PHAsset 迫使我使用这种方法:
而且这种方法需要时间来执行。
我只想直接从存储它们的文件夹中获取图像。
ios - 如何在 iCloud Drive 上生成图像缩略图?
这看起来很容易,但缺乏文档使得这个问题无法猜测。
我的应用程序的 icloud 驱动器上有图片和视频,我想创建这些资产的缩略图。我说的是 iCloud Drive 上的资产,而不是相机胶卷内的 iCloud 照片流。我说的是真正的 iCloud Drive 文件夹。
与图像相比,从视频创建缩略图“容易”。你只需要 2 周的时间来弄清楚它是如何工作的,考虑到苹果写的糟糕的文档,但图像中的缩略图似乎是不可能的。
我现在拥有的是一组NSMetadataItem
s,每个都描述 iCloud 文件夹上的一个项目。
这些是我迄今为止尝试过的不起作用的方法:
方法一
这种方法的结果非常棒。准备好了吗?我们开始:success = YES
,error = nil
和thumbnail = nil。
另一种方法
error = The requested URL was not found on this server.
和thumbnail = nil
此方法似乎仅适用于视频。我正在尝试这个以防万一。这种方法与图像等效吗?
原始方法
NOPE - 数据 = 无
方法 4
第四种可能的方法是使用ALAsset
,但在 iOS 9 上已弃用。
我认为所有这些方法都失败了,因为如果资源是本地的,它们就可以工作(无论错误与否)。关于如何下载图像以便获得缩略图的任何想法?
还有其他想法吗?
谢谢
编辑:经过几次测试,我发现方法 1 是唯一似乎朝着正确方向的方法。这种方法效果不佳,有时会抓取图标,但大部分时间都不起作用。
还有一点就是这个。无论人们向我建议什么,他们总是说要下载整个图像以获取缩略图。我不认为这是要走的路。看看如何获取视频缩略图。您无需下载整个视频以获取其缩略图。
所以这个问题仍然悬而未决。
ios - 从 Swift 中的相机胶卷连拍中删除单张照片
所以我有代码可以从相机胶卷中删除图像。它工作正常,并且可以从连拍中删除单个图像,但是其中一个图像如果被删除,将删除整个批次,我不知道如何阻止它。它通常似乎是连拍组中的最后一张图像。在我的请求选项中,我打开了includeAllBurstAssets
.
ios - 从 PHAsset 获取缩略图
我正在尝试从 PHAsset 获取缩略图以及其他一些信息。这是一个简化的代码片段。
对于我从相机胶卷中检索到的所有图像,请执行以下操作:
在这个阶段我有两个问题:
- 最重要的一个,但我想这是随之而来的。它需要太多的处理能力和从光盘读取。它在模拟器中运行良好。但是当我在具有 300-500 张图像的测试设备(iPhone 5、4S)上运行它时,它会冻结一两分钟,同时获取所有图像。我猜它会一一读取整个集合,调整它的大小并获取所有这些信息。有没有更简单的方法?就像使用 ALAsset 一样,我可以直接得到缩略图,它飞得很快。
- 由于某种原因,它做了两次工作。首先它给了我我想要的东西,小缩略图~ 60 * 40 或大约。一旦它给了我,几秒钟后它会进入另一个循环并开始检索更高分辨率的图像,比如 960 * 640 左右,这就是发生冻结的地方。我不确定为什么会这样,但确实如此。
对这两个问题的任何意见将不胜感激。