美文网首页
SwiftUI:控制图像插值

SwiftUI:控制图像插值

作者: 韦弦Zhy | 来源:发表于2020-09-13 00:21 被阅读0次

\color{red}{\Large \mathbf{Hacking \quad with \quad iOS: SwiftUI \quad Edition}}

{\Large \mathbf{潜力客户名单}}

{\Large \mathbf{Hot \ Prospects}}

如果您创建一个SwiftUI Image视图以将其内容拉伸到大于其原始大小,会发生什么?默认情况下,我们获得图像插值,这是iOS平滑混合像素的地方,您甚至可能根本没有意识到它们已经被拉伸了。当然,这需要付出一定的性能代价,但是大多数时候都不用担心。

但是,在某个地方,图像插值会引起问题,那就是在处理精确像素时。例如,该项目在GitHub上的文件包含一个名为example@3x.png 的卡通外星人小图像——取自 Kenney Platform Art Deluxe 资源包,网址为 https://kenney.nl/assets/platformer-art-deluxe,可在公共领域使用。

example@3x.png

继续并将该图形添加到资产目录中,然后将ContentView结构更改为此:

Image("example")
    .resizable()
    .scaledToFit()
    .frame(maxHeight: .infinity)
    .background(Color.black)
    .edgesIgnoringSafeArea(.all)

这样会将外来字符呈现在黑色背景上,以使其更易于查看,并且由于可调整大小,SwiftUI会将其拉伸以填充所有可用空间。

example

仔细观察颜色的边缘:它们看起来参差不齐,但也模糊。锯齿状的部分来自原始图像,因为它的尺寸仅为66x92像素,但是模糊的部分是SwiftUI试图在拉伸像素时对其进行融合以使拉伸不那么明显的地方。

通常,这种混合效果很好,但是在这里却很难解决,因为源图片很小(因此需要大量混合然后才能以我们想要的尺寸显示),并且图像中有很多纯色,因此混合像素显得突出很明显。

对于这种情况,SwiftUI为我们提供了interpolation()修饰符,使我们可以控制像素融合的应用方式。这有多个层次,但实际上,我们只关心一个层次:.none。这将完全关闭图像插值,因此,与其混合像素,不如将它们放大而具有锐利的边缘。

因此,将您的图像修改为此:

Image("example")
    .interpolation(.none)    
    .resizable()
    .scaledToFit()
    .frame(maxHeight: .infinity)
    .background(Color.black)
    .edgesIgnoringSafeArea(.all)
example

现在,您将看到外来角色保留了像素化外观,这不仅在复古游戏中特别流行,而且对于线条艺术(在模糊时看起来会出错)也很重要。

译自 Controlling image interpolation in SwiftUI

相关文章

  • SwiftUI:控制图像插值

    如果您创建一个SwiftUI Image视图以将其内容拉伸到大于其原始大小,会发生什么?默认情况下,我们获得图像插...

  • 图像插值

    最临近插值 最近邻插值在图像放大时补充的像素取最临近的像素的值。由于方法简单,所以处理速度很快,但是放大图像画质劣...

  • matplotlib的图表组成函数的使用

    本章知识列表 知识运用 当选取10个插值节点是的图像:1.png 当选取300个插值节点时候的图像 散点图图像如下...

  • 最临近插值和双线性插值

    插值在图像中的应用一般为处理图像的缩放。所谓缩放就是缩小和放大。在所有插值缩放算法中要数最邻近插值最简单最暴力,当...

  • 【图像缩放算法】双立方(三次)插值

    当我们进行图像缩放的时候,我们就需要用到插值算法。常见的插值有: 最邻近插值 双线性插值 双立方(三次)插值在这三...

  • 图像处理-插值

    1, 线性插值 Linear Interpolation 在一维空间里,已知两个点的位置及其值,求该两点位置间区域...

  • 图像处理|插值

    opencv interpolation 选项 所用的插值方法INTER_NEAREST 最近邻插值IN...

  • 反距离权重IDW算法解析与示例

    在GIS和图像处理中插值算法很常用,散点状的数据面状化。常用的插值方法包括:反距离权重插值法(IDW)、克里金插值...

  • Android 图片处理笔记

    一、插值法放大 参考【图像缩放】双立方(三次)卷积插值(Android版改写)[https://blog.csdn...

  • 最近邻插值与双线性插值基本原理及Python实现

    1 最近邻插值 1.1 基本原理 假定 源图像的尺寸为 经最近邻插值处理后的图像的尺寸为 由此可以得到缩放倍数 现...

网友评论

      本文标题:SwiftUI:控制图像插值

      本文链接:https://www.haomeiwen.com/subject/bprpektx.html