照片框架。 requestImageForAsset 无法返回正确的图像大小

Posted

技术标签:

【中文标题】照片框架。 requestImageForAsset 无法返回正确的图像大小【英文标题】:Photos framework. requestImageForAsset can't return right imagesize 【发布时间】:2015-02-03 10:25:24 【问题描述】:

我正在使用requestImageForAsset:targetSize:contentMode:options:resultHandler: 方法从 PHAsset 中获取图像。

PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.resizeMode = PHImageRequestOptionsResizeModeExact;
options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
[[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeMake(150, 200) contentMode:PHImageContentModeAspectFit options:options resultHandler:handler];

这些代码有效,但返回的 imageSize 不是 150, 200,而是 300, 400,即图像的完整尺寸。我能做些什么来解决它?

谢谢。

【问题讨论】:

【参考方案1】:

我该如何解释这个...

在代码或界面生成器中,我们将 iPhone 5 屏幕的屏幕尺寸指定为 (320, 568),但实际上它的视网膜尺寸为 (640, 1136)。

所以 (150, 200) 会给你 (300, 400)。如果您想要 150 x 200,请尝试将 targetSize 指定为 (75, 100)。

【讨论】:

【参考方案2】:

您的 targetSize 是:CGSizeMake(150, 200) 尝试将其更改为 CGSizeMake(300, 400)

【讨论】:

【参考方案3】:

我认为我们应该使用屏幕比例修复 targetSize。

-(CGSize)fixTargetSize:(CGSize)targetSize
CGFloat scale = [UIScreen mainScreen].scale;
return CGSizeMake(targetSize.width*scale, targetSize.height*scale);

所以,如果你使用 UIImageView,你得到一个固定的图像,它是正确的显示。

【讨论】:

以上是关于照片框架。 requestImageForAsset 无法返回正确的图像大小的主要内容,如果未能解决你的问题,请参考以下文章

如何使用照片框架在 IOS 8 中将照片添加到照片库

如何使用照片框架获取照片的时间戳?

照片框架崩溃:“不允许此应用程序访问照片数据。”

我如何使用目标 c 中的照片框架从图库中访问照片

使用照片框架按图片大小过滤照片库

照片框架工作异常。