如何缩放列表中的每个图像? pygame

问题描述 投票:0回答:2

如何缩放 pygame 列表中的每张图片?

我实在想不通。每当我尝试时,都会出现错误,表明我正在transform.scaling的项目是str或bool,并且我需要一个表面来使用。我知道我所做的事情是错误的,但尝试并没有什么坏处,而且我不知道如何解决这个问题。我是一名业余编码员,只需要一点帮助。

相关且最新的代码:

rain_imgs = []
rain_list = ["1.png", "mv.png", "b1.png", "b3.png", "b4.png", "b5.png"]
for img in rain_list:
    rain_imgs.append(pg.image.load(path.join(img_folder, img)).convert())
    pg.transform.scale(img in rain_list, (60, 60))

错误:

TypeError: argument 1 must be pygame.Surface, not bool
python python-3.x pygame pygame-surface
2个回答
1
投票

我看到你正在尝试使用

pg.transform.scale(img in rain_list, (60, 60))

引用您刚刚放入列表中的项目。 不幸的是,单独使用时“in”关键字只是告诉您该项目是否存在于指定数组中,这就是错误的来源。 你可能想要做的事情看起来像:

for img in rain_list:
  img_item = pg.image.load(path.join(img_folder, img)).convert()
  pg.transform.scale(img_item, (60, 60))
  rain_imgs.append(img_item)

无需将项目从列表中拉回即可更改它,而是创建一个本地对象,更改其功能,然后存储它,而不会出现布尔错误。

====编辑===

由于它现在附加原始图像,这告诉我

pg.transform.scale(img_item, (60, 60))

可能会返回一个新对象,而不是对提供的对象进行更改。 我会尝试这样的事情:

for img in rain_list:
  img_item = pg.image.load(path.join(img_folder, img)).convert()
  rain_imgs.append(pg.transform.scale(img_item, (60, 60)))

看看是否有效。


0
投票

这是我一直在使用的:

scaled_rain_list = []

for img in rain_list:
scaled_rain_list.append(pygame.transform.scale(img,(60,60)))

这将创建一个名为“scaled_rain_list”的新列表,其中存储所有放大的图像。

© www.soinside.com 2019 - 2024. All rights reserved.