ios – 调整SKSpriteNode的大小而不会降低质量

ios – 调整SKSpriteNode的大小而不会降低质量,第1张

概述我有一个SKSpiteNode: private var btnSound = SKSpriteNode(imageNamed: "btnSound") 现在我在Adobe Illustrator中制作了这个大小为2048×2048像素的图像(真的过度杀伤),所以它有很好的分辨率.我的问题是当我设置图像的大小时,其中的线条呈锯齿状或锯齿状……不平滑. 这是我的大小: btnSound.positi 我有一个SKSpiteNode:

private var btnSound = SKSpriteNode(imagenamed: "btnSound")

现在我在Adobe Illustrator中制作了这个大小为2048×2048像素的图像(真的过度杀伤),所以它有很好的分辨率.我的问题是当我设置图像的大小时,其中的线条呈锯齿状或锯齿状……不平滑.

这是我的大小:

btnSound.position = CGPoint(x: self.frame.wIDth * 1 / 5,y: self.frame.height * (5.2 / 8))        btnSound.size.wIDth = self.frame.wIDth * 1 / 7        btnSound.size.height = btnSound.size.wIDth        btnSound.zposition = 1        self.addChild(btnSound)

这是在Illustrator(屏幕截图)

中的图像,这是应用程序中的图像(屏幕截图)

我尝试过的事情:

>使图像pdf
>使图像PNG
>制作PNG 72 DPI,使其达到300 DPI
>在模拟器/设备上运行(iPhone7)
> btnSound.setScale(preDetermineScale)
>使用以下函数,虽然我不熟悉UIGraphicsBeginImageContext方法.这张照片模糊不清.下面是代码和结果图像:

func resizeImage(image: UIImage,newWIDth: CGfloat) -> UIImage? {let scale = newWIDth / image.size.wIDthlet newHeight = image.size.height * scaleUIGraphicsBeginImageContext(CGSize(wIDth: newWIDth,height: newHeight))image.draw(in: CGRect(x: 0,y: 0,wIDth: newWIDth,height: newHeight))let newImage = UIGraphicsGetimageFromCurrentimageContext()UIGraphicsEndImageContext()return newImage}func setup() {let btnSoundimg = UIImage(named: "btnSound")let resizeBtnSoundImage = resizeImage(image: btnSoundimg!,newWIDth: self.frame.wIDth * 1 / 7)let btnSoundTexture = SKTexture(image: resizeBtnSoundImage!)btnSound.texture = btnSoundTexturebtnSound.position = CGPoint(x: self.frame.wIDth * 1 / 5,y: self.frame.height * (5.2 / 8))btnSound.size.wIDth = self.frame.wIDth * 1 / 7btnSound.size.height = btnSound.size.wIDthbtnSound.zposition = 1self.addChild(btnSound)}

我是自学成才,并没有完成大量的编程,所以我很想学习如何正确地做到这一点,因为我只是找到了调整UIImageVIEws大小的解决方案.

我的另一个想法是,它可能不应该是一个spriteNode,因为它只用于按钮?

解决方法 首先,要遵循一些原始规则,以获得最佳结果.

>仅按因子2计算,即50%,25%,12.5%,6.25%等.

这样,原始图像中的任何四个像素在缩放图像中变为1个像素,对于缩放尺寸的每个步骤.
>使原始图像的大小为2的指数平方.所以:128×128,256×256,512×512等.你已经用你的2048×2048大小调整了这个.
>打开mipmapPing.默认情况下,这在SpriteKit中是关闭的,因此您必须将其打开:https://developer.apple.com/reference/spritekit/sktexture/1519960-usesmipmaps
>使用不同的过滤模式,以最大限度地减少图像中的噪点和条带:https://developer.apple.com/reference/spritekit/sktexture/1519659-filteringmode提示,线性可能会更好.>与往常一样,明智地使用Photoshop进行手动缩放将为您提供最佳结果和最小的灵活性

总结

以上是内存溢出为你收集整理的ios – 调整SKSpriteNode的大小而不会降低质量全部内容,希望文章能够帮你解决ios – 调整SKSpriteNode的大小而不会降低质量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1077885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存