较小图像视图中的较大尺寸图像

Posted

技术标签:

【中文标题】较小图像视图中的较大尺寸图像【英文标题】:Bigger size image in smaller image view 【发布时间】:2014-10-15 18:45:29 【问题描述】:

这更像是一个合乎逻辑的问题,一切正常。

我有一个 ImageView,为此我从 Web 服务器下载图像。我们的网络服务器保留最大尺寸的图像,然后我正在为所需的设备重新缩放图像。所以可以说,如果我有一个大小为 200 * 200 的 UIImageView 并且我正在下载 400 * 400 的图像,我将图像重新缩放为 200 * 200,然后将其放入 imageview 中,我尝试将 400 x 400 图像放入 200通过 200 图像视图,我看起来很好(没有像素化)。我实现缩小的方式是

[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

在图像上下文中。现在我觉得苹果可能会这样做,因为它正在重新调整我的图像以适应图像视图,所以它真的需要吗?还是我应该直接将高分辨率图像放在图像视图中?

需要建议。

【问题讨论】:

【参考方案1】:

您应该可以将 400x400 UIImage 分配给 200x200 UIImageView。 CoreAnimation 将处理下面的图像缩放。

图像质量

如果你想尝试不同的图像缩放质量,你可以在 UIImageView 的图层上设置minificationFilter。默认为kCAFilterLinear,我认为这对您的使用来说是可以的。将选择 400x400 图像中的多个像素并线性混合在一起以获得 200x200 图像像素颜色。 kCAFilterNearest 将以图像质量为代价获得更好的性能(从 400x400 图像中选择单个像素来获取 200x200 图像像素的颜色)。

您可以尝试改用kCAFilterTrilinear,这应该会以牺牲一些性能为代价获得更好的图像质量。尽管this guy's 已在 iPad 2 上成功使用它,但文档并未明确说明这实际上会对哪些设备产生影响,这让我认为现在所有设备都可能支持它。该文档还指出,您的图像可能需要具有 2 的幂的尺寸才能产生影响。

性能

您可以将图像从 200x200 缩小,或许可以作为性能优化来节省内存和 CoreAnimation 渲染时间(包括图像缩放),但我不会这样做,除非您有理由认为您的应用程序的性能实际上会受益于这个。

【讨论】:

嗨詹姆斯,感谢您的回复。性能对我来说不是问题。我最初是这样做的,所以我没有像素化问题。现在在实施之后,我试图了解是否真的需要这种手动缩减。甚至我都觉得这是多余的。根据您的经验,您是否曾观察到默认 CoreAnimation 缩小(保持纵横比相同)的任何像素化问题? 我一直对 Core Animation 所做的缩放感到满意。我认为您使用的尺寸(将每个尺寸减半)应该意味着图像缩放对您来说非常好。我已经用更多信息更新了我的答案,这可能会有所帮助。 非常感谢詹姆斯,这真的很有帮助。我以前不知道这个 minificationFilter 。再次非常感谢:) 不用担心 - 乐于助人! :)

以上是关于较小图像视图中的较大尺寸图像的主要内容,如果未能解决你的问题,请参考以下文章

Jcrop - 弹出窗口中图像尺寸较小的问题

Android中的相机,如何获得最佳尺寸,预览尺寸,图片尺寸,视图尺寸,图像失真

如何在 Android 的滚动视图中放大/更改子图像视图尺寸以使图像全尺寸

Xcode 约束问题

在较大的图像上覆盖较小的图像 python OpenCv

如何使用 ios 中的约束使视图位置动态化?