Python(Pygame)中如何仅修改图片单维度尺寸实现等比例自动缩放
Pygame指定宽度自动等比例缩放实现
Pygame 原生没有提供仅传入目标宽度就自动匹配对应高度的直接缩放方法,但你不需要写冗余的两次比例计算,用极简的封装就能实现和内置方法几乎一致的使用体验,不会额外增加代码复杂度。
最简实现方案
你只需要写一次比例计算即可完成逻辑,完全不需要重复换算:
import pygame def scale_to_width(origin_img: pygame.Surface, target_width: int) -> pygame.Surface: origin_w, origin_h = origin_img.get_size() # 单次计算缩放比例,同步算出目标高度 scale_ratio = target_width / origin_w target_height = int(origin_h * scale_ratio) # 像素风素材用scale,写实类素材可以替换为smoothscale获得更好画质 return pygame.transform.scale(origin_img, (target_width, target_height))
使用方式
后续业务代码里调用只需要传入原始图片和目标宽度即可,不需要每次重复写尺寸计算逻辑:
# 示例:加载图片后缩放到宽度为400像素,高度自动适配 img = pygame.image.load("test.png").convert_alpha() scaled_img = scale_to_width(img, 400)
如果你需要固定高度自动适配宽度,只需要把函数里的比例计算逻辑调整为以目标高度为基准即可,逻辑完全一致。
另外Pygame 2.0及以上版本提供了pygame.transform.scale_by方法,可以直接传入统一的缩放倍数完成等比缩放,但如果需要固定某一个维度的精确像素值,还是需要上述一次比例计算,没有更简便的内置实现。
内容的提问来源于stack exchange,提问作者Abdul Rafey
相关产品推荐
相关产品推荐

