似乎开发人员总是为不同的设备创建不同的图像资源并根据设备加载它们。但是,只为最大分辨率的设备 (iPad) 创建图像然后为 iPhone 6、5 等缩小该图像有什么缺点吗?
我使用 SpriteKit,所以我只需要创建不同大小的 SKSpriteNodes 并将相同的纹理应用于它们并缩放它以适合节点。
我知道性能是需要考虑的因素(为旧设备加载大图像)。但除此之外,还有别的吗?这些图像会显得更加像素化/模糊吗?
最佳答案
完美/纯粹的答案是为每个设备分辨率使用单独的图像和代码。
但是,从您自己的时间和理智的角度来看,考虑到分辨率和屏幕尺寸的数量不会很快减少,使用有限的设置是有意义的。那么为什么要浪费时间准备多个图像,除非可以通过 xcode 之类的工具使它变得更简单。
对于正方形或固定宽高比的图像,我认为您只需要一张图像。对于像背景这样的图像存在问题,无论分辨率如何,您至少需要满足不同的纵横比:所以单独的纵横比图像是必不可少的(如 3:2 和 16:9),除非你不介意挤压、拉伸(stretch)或裁剪图像。
如果您发现性能在测试中受到影响,您可以随时添加较低分辨率的图像。
就像素化而言,这是您无法避免的事情。如果您考虑从 x3 分辨率变为 x1 分辨率时会发生什么,您必须将 3x3 像素混合到 1x1 中。在高分辨率下,任何一个像素宽(如一条线)或在几个像素上颜色快速变化的东西都会受到最大影响。网上有很多这方面的文章,你可以看看。
避免像素化的唯一方法是使用矢量图像,但这需要特殊的软件来加载矢量图像并将它们渲染到 UIImages 中。
当你缩小时,每张图片都会受到不同的影响。一个想法可能是选择 x2 图像,您将 iPhone 3 缩小 1,iPhone 6+ 放大 1 到 x3。这将以原始分辨率覆盖大多数当前设备,并且可能提供不太明显的像素化。
关于iOS - 基于设备的不同图像或缩放相同的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28732605/