调整图像内容大小但保持图像尺寸

2023-12-04

我正在尝试使用 PyGame 在 Python 中制作一个基本的 Pokemon 副本。我过去遵循过一些有关该库的教程。因此,对于这个项目,我将有一个基本的瓦片结构,要么是草,要么是水。玩家不能在水方块上移动,但可以在草方块上自由移动。我通过教程获得的精灵尺寸为 64 x 64,它占据了图块的整个空间,因此边界周围没有透明像素。

然而,出于我的目的,我需要使用我自己的精灵(64 x 64),这是我从精灵表中获得的。然而,在这种情况下,精灵的图像上半部分只是透明的、未使用的像素。这同样适用于精灵两侧的四分之一。因此,我需要通过沿两个轴将可见像素大小乘以 2 来批量调整所有这些精灵的大小。 IE,只需将精灵大小增加比例因子 2。我可以轻松做到这一点,but它仍然无效,因为新的精灵大小将为 128 x 128 并且未使用像素的比率保持不变。

我的问题:

  • 如何通过比例因子 2 调整精灵大小,同时仅通过处理 64 x 64 帧之外的透明像素来保留 64 x 64 的原始尺寸?

我需要一种可以用于我拥有的所有 9600 个精灵的方法,最好是用 Python,尽管我不介意使用其他软件的解决方案。

我尝试在网上寻找解决方案,但我不知道如何正确表达这个问题。


创建一个空的pygame.Surface具有透明 Alpha 且大小为 32x32 的对象:

new_image = pygame.Surface((32, 32), pygame.SRCALPHA)

blit所需区域 (32, 16, 32, 32) 形成原始 64x64 Sprite (original_image)到新表面:

new_image.blit(original_image, (0, 0), (32, 16, 32, 32))

将新 Surface 对象缩放pygame.transform.smoothscale

new_image = pygame.transform.smoothscale(new_image, (64, 64))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调整图像内容大小但保持图像尺寸 的相关文章

随机推荐