问题标签 [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.

0 投票
4 回答
5426 浏览

ios - 在 Swift 中获取 PHAsset 的位置

出于某种原因location, a 上的属性PHAsset仅在 Objective-c 中公开,而不在 Swift 中公开。

文档:PHAsset.location

为了解决这个问题,我想我可以创建一个 Objective-C 类,其唯一目的是提取位置并将其导入 Swift。

LocationGetter.h

LocationGetter.m

到目前为止一切都很好,但是当我尝试在 Swift 中使用它时:

“LocationGetter.Type”没有名为“locationForAsset”的成员

额外的问题:为什么苹果没有location迅速曝光?

0 投票
3 回答
9291 浏览

ios - 如何确定 PHFetchResult 中的 PHAsset 是否代表已删除的照片?

我正在尝试使用 iOS 8 中的新照片框架获取在设备上拍摄的最后一张照片的缩略图。我现在要做的代码如下:

该代码设法抓取设备上最近拍摄的照片,但如果在设备上拍摄的最后一张照片被删除,则不考虑这一事实,并且按钮的图像设置为resultHandler. 这似乎是由于在 iOS 8 中,当您删除一张照片时,它需要 30 天才能真正从设备中删除,并且出于某种原因,这些照片仍包含在PHFetchResults.

我试图在 中PHAsset包含的对象上查找“已删除”或类似属性assetsInfo,但找不到任何类型的信息。调试器中已删除照片的打印输出如下所示:

中下一个对象的打印输出,assetsInfo我验证的照片没有被删除,如下所示:

那里似乎没有任何信息可以告诉我照片是否被删除。我认为该hidden属性可能会有所帮助,但它与照片是否出现在特定的 Photos.app 相册/收藏中有关。我认为也许该assetSource属性可能有用,但似乎没有记录在案,并且经过进一步调查,似乎也与照片的已删除状态无关。

有没有办法查看PHAsset对象是否代表已删除的照片?有没有办法缩小我要获取的资产以排除“最近删除”相册中包含的照片?

0 投票
10 回答
28149 浏览

ios8 - 来自 PHAsset 的 NSURL

我正在将我们的应用程序转换为使用 iOS8 的照片框架,ALAsset 框架显然是 iOS8 下的二等公民。

我有一个问题是我们的架构真的需要一个 NSURL 来表示媒体在“磁盘”上的位置。我们使用它来将媒体上传到我们的服务器以进行进一步处理。

使用 ALAsset 很容易:

但我只是没有在 PHAsset 中看到这种能力。我想我可以打电话:

然后把它写到文件系统中的一个临时点,但这看起来非常沉重和浪费,更不用说可能很慢了。

有没有办法得到这个,或者我要重构我的应用程序,只使用 iOS7 的 NSURL 和 iOS8 的其他方法?

0 投票
1 回答
313 浏览

ios8 - 使用 iOS8 中的新照片框架重新渲染视频

我需要能够从照片中拍摄视频并重新渲染,及时剪辑,更改宽度和高度以及帧速率。当然我需要开始:

我应该能够调整宽度、高度和持续时间。从中获取一个 NSData,将其写入文件 syset.m

但是 url 是 nil,这对我来说意味着我无法使用新的 Photos 框架编辑视频。(使用 AVAssetExportSession 时,ALAsset 对此没有问题。)这是有道理的,因为 Apple Dev 示例代码也无法编辑视频。

现在,为了让生活更轻松,我可以将该 url 传递给 AVAssetExportSession 但我不能,因为它是 nil。如果我只是修改了宽度、高度和持续时间,我仍然需要从中获取 NSData,然后将其写入文件系统。

我不需要将修改后的视频写回照片,我实际上需要文件系统上的视频,因为我会将它上传到我们的服务器。

0 投票
4 回答
7626 浏览

ios - 如何使用 PhotoKit 访问慢动作视频的 NSData/NSURL

使用新的 Photo 框架,我可以NSData使用requestImageDataForAsset. 我还可以使用PHImageFileURLKey返回的info NSDictionary.

这适用于图像和普通视频。

但是,当资产是 PHAssetMediaSubtypeVideoHighFrameRate(慢动作视频)时,返回的数据对应于包含视频第一帧的 JPG 文件(NSData、dataUTI 和 info 字典都指向同一个 jpg 文件)。例如,这是慢动作视频返回的 URL 和 dataUTI:

PHImageFileURLKey = "file:///var/mobile/Media/PhotoData/Metadata/DCIM/100APPLE/IMG_0642.JPG"; PHImageFileUTIKey = "public.jpeg";

为什么会这样?如何访问慢动作视频的 NSData/NSURL 而不是这个 JPG 预览?

0 投票
2 回答
1184 浏览

ios - PHAsset:什么是“assetSource”?

我正在枚举一个 PHFetchResult。如果我对返回的 PHAsset 执行 println,我会得到:

有谁知道assetSource=3比特是什么?如果可能的话,我想在assetSource 上运行一个谓词,但在任何地方都找不到关于它是什么或如何访问它的任何信息。是私人的吗?

0 投票
2 回答
3411 浏览

ios - requestImageDataForAsset 结果处理程序格式不正确

我正在尝试从 PHAsset 请求完整图像。

我的代码如下

我收到了这个错误:

在此处输入图像描述

我已阅读有关此调用的文档(https://developer.apple.com/library/IOs/documentation/Photos/Reference/PHImageManager_Class/index.html#//apple_ref/occ/instm/PHImageManager/requestImageDataForAsset:options:resultHandler :)

我认为,我已经遵循了所需的尾随语法闭包,并输入了适当的参数。

我也观看了 WWDC 2014 视频。

似乎无法使其适用于完整图像。

如果我想要一个更小尺寸的图像,我使用了这个代码:

这有效。

所以我不确定我在第一次通话中做错了什么,但希望了解如何从 PHAsset 请求全尺寸图像和/或我在第一个代码块中的语法有什么问题。

谢谢

更新:这是错误消息

“不能使用参数列表类型‘(PHAsset, options:NilLiteralConvertible, (($T6, ($T6,$T7,$T8,($T6,$T7,$T8)... 。”

0 投票
2 回答
9845 浏览

ios - 与 assetsd 的连接被中断或 assetsd 死亡

我从 PHAssets 加载照片。当我加载一些图像并将它们传递给另一个视图控制器时,我得到了这个错误日志。我似乎无法在网上找到任何关于此的内容。有谁遇到过这个并且知道它是什么?

我也收到了这个错误:

0 投票
4 回答
13364 浏览

ios - 从“requestImageForAsset”返回的 UIImage 大小甚至不接近“targetSize”设置

我已经彻底阅读了最新的 iOS8 相框作品,我正在尝试从用户库中获取一些资产以进行显示。我让用户一次编辑 4 张图像。但正因为如此,我需要压缩图像,否则应用程序会崩溃。

我正在使用 PHImageManager 通过以下代码加载图像:

如您所见,我正在计算目标尺寸以确保图像至少不大于屏幕。如果是,我会在图像上按比例缩小。然而,这是一个典型的打印日志

目标大小为 (768.0,798.453531598513) 结果大小为 (1614.0,1678.0)

即使我将目标大小设置为 768x798(在这种特定情况下),它给我的结果 UIImage 是它的两倍多。现在根据文档,targetSize 参数

“要返回的图像的目标大小。”

不是最清楚的解释,但从我的实验来看,它与此不符。

如果你有一些建议,我很想听听!

0 投票
1 回答
1038 浏览

swift - 照片框架 - 如何从 PHAsset 获取图像的 CLLocation?

我能够从 PHFetchResults 成功获取图像并将其加载到 UIImage 中,但是当我尝试获取图像的位置时,出现错误:

  • 运行时 NSLog 语句中的“致命错误:在展开可选值时意外发现 nil”。

如果我NSLog用以下语句替换上述语句以获取描述(或任何其他属性,如长度、像素尺寸等 NSLog 正确返回它),它不会引发错误。

我尝试使用 PHImageManger.requestImageDataForAsset 等。我得到了许多其他属性,如下所示,但位置。

请指教。