如何防止图像失真?
Posted
技术标签:
【中文标题】如何防止图像失真?【英文标题】:How to prevent distorted images? 【发布时间】:2018-11-04 09:48:37 【问题描述】:我遇到的问题是我添加的图像失真。我在(1125 x 2436)
为iPhone X创建了一个像素精确的背景,所以我不必使用.aspectFill
和.aspectFit
,因为我想要一个没有黑色边框的屏幕。
我使用以下代码来创建图像:
func animateDeck()
let chip = SKSpriteNode(imageNamed: "Chip")
chip.position = CGPoint(x: 300, y: 400)
chip.zPosition = 2
chip.setScale(1)
gameScene2.addChild(chip)
print("test")
有没有办法在不使用.aspectFit
或.aspectFill
的情况下以正确的尺寸显示图像?
now (left) and how it should be (right)
提前谢谢你!
【问题讨论】:
如果你有一个与 iPhone X 尺寸完全相同的图像,并将位置设置为view.center
,你应该没问题。但是,即使它应该完美贴合,也请将其设置为 aspectFill
或 aspectFit
,以免在其他屏幕尺寸上出现失真。
尝试检查chip
是否符合您的预期大小 - 如果不是,您可以使用chip.size = CGSize(width: 1125, height: 2436)
进行设置。
我创建了一个尺寸为 1125 x 2436 的新图像。中间是 128x128 芯片。图像的其余部分是透明的。不幸的是,这不起作用。使用另一个变体gameScene2.scaleMode = .aspectFit
再次显示黑条,我想阻止它。
如果不移动背景,为什么不考虑在视图控制器而不是场景中添加UIImage
?
当我使用let image = UIImage(named: "Chip")
时,我无法将其用作节点。所以我不能再使用SKPhysicsBody、SKAction等。
【参考方案1】:
查看this project I just made,向您展示如何创建纹理并将其应用到节点。所有你需要的都应该在GameScene.swift
。
另外,在您的 ViewController
中,请确保您的 GameScene
已正确初始化,如我的项目中所示,或者您是如何做到的:
gameScene2 = GameScene(size: view, bounds: size)
【讨论】:
我从不建议这样做,请将 sks 设置为 iphone x 的大小。您应该在设计场景时考虑 1 个尺寸,从长远来看,这样的编程只会伤害您。以上是关于如何防止图像失真?的主要内容,如果未能解决你的问题,请参考以下文章
如何在opencv中使用python语言清理图像中的线条并确保图像不失真