icon
网址
type
Post
status
Published
date
Mar 23, 2026
slug
python-batch-resize-images
summary
使用 Python 和 Pillow 批量调整 RG34XX 掌机游戏封面的大小,将所有封面统一为宽度 300px,保持原有宽高比,并保留原文件名。脚本遍历指定文件夹中的图片,计算新高度并进行等比缩放,输出到新目录。选择 300px 宽度是因为其在设备屏幕上显示效果良好,且可以减小文件体积。
tags
Python
工具
开发
category
技术分享
内容形式
完成日期
URL
最近在折腾 RG34XX 掌机的游戏封面(boxart),发现不同来源的封面尺寸、比例都不一样,放在右下角的时候大小不统一,看着很别扭。RG35XX / RG34XX 系列的教程里也提到,最好把 boxart 的宽度控制在 300 像素左右,这样既清晰又不会遮挡 UI。

这篇文章记录一下我用 Python + Pillow 批量把 boxart 统一成“宽度 300px,保持原有宽高比,并且保留原文件名”的完整过程。
需求分析
我的需求大致是这样:
- 设备:RG34XX 掌机,屏幕分辨率 720×480,boxart 显示在屏幕的一角。
- 目标:所有游戏封面统一缩放到 宽度 300px,高度按比例缩放,不拉伸不裁切。
- 文件名:保持原来的文件名不变,只是输出到一个新的目录,避免直接覆盖原图。
- 数量:几百上千张图片,必须要脚本批量处理,不可能手工一张张改。
直观来说,就是写一个脚本做这件事:
- 遍历指定文件夹内的所有图片文件。
- 打开图片,计算在“宽度 300px”前提下的新高度。
- 以新的尺寸进行等比缩放。
- 在另一个输出目录中,以原文件名保存结果。
准备环境:安装 Python 和 Pillow
前提是你本地已经安装了 Python 3,系统是 Windows / macOS / Linux 都可以。然后安装 Pillow(PIL 的维护分支),这是 Python 里最常用的图像处理库。
安装完成后,在 Python 里就可以这样导入:
核心思路:固定宽度,按比例算高度
保持宽高比例的关键在于:只指定新的宽度,根据原图比例算出新的高度。
假设:
- 原图尺寸是 。
- 目标宽度是 300px。
缩放比例:
新的高度:
实现上就是:
new_height = int(h * (target_width / w))。Pillow 官方文档和很多示例里,都是类似的写法:先算比例,再把新宽高传给
Image.resize()。完整脚本
下面这份脚本会递归遍历输入根目录下的所有子文件夹,把所有 jpg / jpeg / png 图片等比缩放到 300px 宽,并在输出目录中复刻相同的子目录结构,同时保持原文件名不变。
几点说明:
- 之所以选择统一输出为 PNG,是因为在 MuOS 的实际使用中,PNG 的兼容性与显示效果通常更稳定(尤其是带透明通道、调色板图这类素材),可以减少不同来源封面在解码/显示上的坑。
os.walk(input_root):递归遍历所有子文件夹。
rel_dir = os.path.relpath(dirpath, input_root):得到当前子目录相对于输入根目录的路径。
out_dir = os.path.join(output_root, rel_dir):在输出根目录下创建同样的子目录结构。
- 如果你的封面里还有
.webp等格式,可以把后缀加到exts里。

为什么选择宽度 300px
从实际体验和社区经验来看,300px 对 RG35XX / RG34XX 系列设备比较合适:
- 屏幕分辨率是 720×480 左右,boxart 放在右下角时 300px 宽不会太占空间。
- Retro Game Corps 对 RG35XX 的建议是“boxart 宽度不超过 300px,OS 期望的是接近 4:3 的画面”。
- 过大的图片不仅浪费空间,加载也更慢,缩到 300px 还可以顺便减小文件体积。
当然,具体看你的主题布局,如果你更喜欢小一点的封面,也可以把上面的
target_width = 300 改成 250,脚本其他逻辑完全不用动。小结
通过 Python + Pillow,我们可以非常轻松地批量把 RG34XX 的游戏 boxart 统一成宽度 300px,同时保持原有的宽高比例和文件名不变。对经常折腾掌机主题、喜欢自己整理封面的玩家来说,这是一个很实用、也很容易上手的小工具。
Loading...




