ALAssetRepresentation 的 scale 属性总是返回 1

Posted

技术标签:

【中文标题】ALAssetRepresentation 的 scale 属性总是返回 1【英文标题】:scale property of ALAssetRepresentation always return 1 【发布时间】:2014-03-29 08:09:22 【问题描述】:

我正在尝试从ALAsset 获取原始图像并发现ALAssetRepresentationscale 属性始终返回1.0。所以我想知道该属性是否会返回其他值,例如 2.0 ?

ALAssetRepresentation *assetRepresentation = [asset defaultRepresentation] ;
CGImageRef imgRef = assetRepresentation.fullResolutionImage ;
UIImage *image = [UIImage imageWithCGImage:imgRef] ;

【问题讨论】:

【参考方案1】:

在引入视网膜显示器后,物理分辨率翻了一番,但对于 API 调用,它保持不变。所以在一些方法和函数中(例如参见UIGraphicsBeginImageContextWithOptions)添加了额外的参数'scale'。不知道为什么[ALAssetRepresentation scale]描述这么差

返回表示的比例。

不过你可以看UIScreen.scale的描述

该值反映了从 默认逻辑坐标空间转化为设备坐标空间 这个画面。默认逻辑坐标空间是使用测量的 点。对于标准分辨率显示器,比例因子为 1.0 和 一点等于一像素。对于 Retina 显示器,比例因子为 2.0,一个点用四个像素表示。

我认为[ALAssetRepresentation scale] 应该是 2.0,如果您要在具有视网膜显示屏的设备上运行此代码。

【讨论】:

很抱歉,我在 Retina 设备上运行我的代码,但仍然得到 1.0。 也许“反之亦然”?可以在非视网膜设备上试用吗?

以上是关于ALAssetRepresentation 的 scale 属性总是返回 1的主要内容,如果未能解决你的问题,请参考以下文章

正在报告 ALAssetRepresentation 元数据方法的崩溃

如何获取共享照片流 ALAsset 的 ALAssetRepresentation?

“PixelHeight”和“PixelWidth”是不是总是出现在 ALAssetRepresentation 元数据中?

Swift 中 ALAssetRepresentation CGImage 的内存泄漏

如何从 Swift 中的 ALAssetRepresentation 获取低分辨率图像或缩略图

ALAssetRepresentation URL“持久性”生命周期?