You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

保持宽高比调整图片:同宽堆叠图片适配屏幕的缩放方案

解决同宽图片缩放后保持比例且宽度一致的问题

核心思路是用统一的缩放因子处理所有图片,这样既能保持每张图的宽高比,又能保证缩放后宽度一致(因为原图宽度相同)。

步骤说明

  1. 先计算三张图片的原始总高度:
    total_original_height = img1.get_height() + img2.get_height() + img3.get_height()
    
  2. 计算缩放比例:这个比例是屏幕高度与总原始高度的比值,也就是你之前计算高度时用到的比例:
    scale_factor = screen.get_height() / total_original_height
    
  3. 对每张图片,用这个比例同时缩放宽度和高度即可。因为原图宽度相同,缩放后宽度必然一致,且每张图的宽高比完全保留。

代码实现(浮点数版本)

import pygame

# 假设已经加载了img1、img2、img3,以及screen对象
total_original_height = img1.get_height() + img2.get_height() + img3.get_height()
scale_factor = screen.get_height() / total_original_height

# 处理第一张图
new_w1 = int(img1.get_width() * scale_factor)
new_h1 = int(img1.get_height() * scale_factor)
new_img1 = pygame.transform.scale(img1, (new_w1, new_h1))

# 处理第二张图
new_w2 = int(img2.get_width() * scale_factor)
new_h2 = int(img2.get_height() * scale_factor)
new_img2 = pygame.transform.scale(img2, (new_w2, new_h2))

# 处理第三张图
new_w3 = int(img3.get_width() * scale_factor)
new_h3 = int(img3.get_height() * scale_factor)
new_img3 = pygame.transform.scale(img3, (new_w3, new_h3))

整数运算版本(避免浮点数误差)

如果你偏好和之前一样的整数除法,也可以用分数形式的比例:

total_original_height = img1.get_height() + img2.get_height() + img3.get_height()
scale_num = screen.get_height()
scale_den = total_original_height

# 处理第一张图
new_w1 = img1.get_width() * scale_num // scale_den
new_h1 = img1.get_height() * scale_num // scale_den
new_img1 = pygame.transform.scale(img1, (new_w1, new_h1))

# 处理第二张图
new_w2 = img2.get_width() * scale_num // scale_den
new_h2 = img2.get_height() * scale_num // scale_den
new_img2 = pygame.transform.scale(img2, (new_w2, new_h2))

# 处理第三张图
new_w3 = img3.get_width() * scale_num // scale_den
new_h3 = img3.get_height() * scale_num // scale_den
new_img3 = pygame.transform.scale(img3, (new_w3, new_h3))

这样处理后,三张图片不仅总高度适配屏幕,每张图的宽高比完全不变,而且缩放后的宽度也完全一致,完美满足你的需求。

内容的提问来源于stack exchange,提问作者Rebagliati Loris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 06:10:31