gpt4 book ai didi

pygame - 如何在 Pygame 中更改图像大小?

转载 作者:行者123 更新时间:2023-12-01 09:48:38 40 4
gpt4 key购买 nike

有我正在导入的图像:

look_1 = pygame.image.load('data\\png\\look1.png').convert_alpha()

我试图减少它的大小是这样的:
pygame.transform.scale()

但这似乎不是正确的方法。

最佳答案

您必须决定是否要使用 Use pygame.transform.smoothscale pygame.transform.scale .虽然 pygame.transform.scale使用最近的像素执行快速缩放,pygame.transform.smoothscale通过像素插值将表面平滑地缩放到任何大小。
使用 pygame.transform.scale() 放大 Surface将导致锯齿状的结果。缩小时会丢失信息(像素)。相比之下,pygame.transform.smoothscale模糊表面。
pygame.transform.scale() pygame.transform.smoothscale 以同样的方式使用。它们不缩放输入表面本身。它创建一个新表面并对新表面进行缩放“blit”。新表面由返回值返回。他们:

  • 创建一个大小为 newSurface 的新曲面 ( (width, height) ) .
  • 缩放和复制 SurfacenewSurface .
  • 返回 newSurface .

  • look_1 = pygame.image.load('data\\png\\look1.png').convert_alpha()
    look_1 = pygame.transform.scale(look_1, (new_width, new_height))
    或者
    look_1 = pygame.image.load('data\\png\\look1.png').convert_alpha()
    look_1 = pygame.transform.smoothscale(look_1, (new_width, new_height))

    另见 Transform scale and zoom surface
    最小示例: replit.com/@Rabbid76/PyGame-ScaleCenter

    import pygame

    class ScaleSprite(pygame.sprite.Sprite):
    def __init__(self, center, image):
    super().__init__()
    self.original_image = image
    self.image = image
    self.rect = self.image.get_rect(center = center)
    self.mode = 1
    self.grow = 0

    def update(self):
    if self.grow > 100:
    self.mode = -1
    if self.grow < 1:
    self.mode = 1
    self.grow += 1 * self.mode

    orig_x, orig_y = self.original_image.get_size()
    size_x = orig_x + round(self.grow)
    size_y = orig_y + round(self.grow)
    self.image = pygame.transform.scale(self.original_image, (size_x, size_y))
    self.rect = self.image.get_rect(center = self.rect.center)

    pygame.init()
    window = pygame.display.set_mode((300, 300))
    clock = pygame.time.Clock()

    sprite = ScaleSprite(window.get_rect().center, pygame.image.load("Banana64.png"))
    group = pygame.sprite.Group(sprite)

    run = True
    while run:
    clock.tick(60)
    for event in pygame.event.get():
    if event.type == pygame.QUIT:
    run = False

    group.update()

    window.fill(0)
    group.draw(window)
    pygame.display.flip()

    pygame.quit()
    exit()

    关于pygame - 如何在 Pygame 中更改图像大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43046376/

    40 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com