较小图像视图中的较大尺寸图像
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 。再次非常感谢:) 不用担心 - 乐于助人! :)以上是关于较小图像视图中的较大尺寸图像的主要内容,如果未能解决你的问题,请参考以下文章
Android中的相机,如何获得最佳尺寸,预览尺寸,图片尺寸,视图尺寸,图像失真