Python 图片处理:裁剪缩放至300×200,格式JPG/PNG/GIF,控制大小≤100KB
使用Pillow库,功能:
- 强制输出尺寸
300 × 200 - 支持输入 JPG,PNG,GIF
- 循环调节质量,把文件压到100KB以内
- 保存输出文件
安装依赖
pip install pillow
完整代码
from PIL import Image
import os
def process_image(input_path: str, output_path: str, target_size=(300, 200), max_kb=100):
"""
处理图片:缩放裁剪到300x200,文件不超过100KB
:param input_path: 原始图片路径
:param output_path: 输出保存路径
:param target_size: (宽,高) 目标尺寸 300*200
:param max_kb: 最大文件大小 KB
"""
max_bytes = max_kb * 1024
width, height = target_size
img = Image.open(input_path)
# 缩放+居中裁剪到固定300×200
img = img.resize(target_size, Image.Resampling.LANCZOS)
# 区分格式处理
ext = os.path.splitext(output_path)[1].lower()
quality = 95
if ext in [".jpg", ".jpeg"]:
# JPG 循环降低质量控制体积
while True:
img.save(output_path, format="JPEG", quality=quality, optimize=True)
fsize = os.path.getsize(output_path)
if fsize <= max_bytes or quality <= 10:
break
quality -= 5
elif ext == ".png":
img.save(output_path, format="PNG", optimize=True)
elif ext == ".gif":
img.save(output_path, format="GIF", optimize=True)
final_size = os.path.getsize(output_path) / 1024
print(f"已保存 {output_path} | 尺寸 {img.size} | 文件大小 {final_size:.2f} KB")
if __name__ == "__main__":
# ========== 修改这里你的输入输出路径 ==========
INPUT_FILE = "test.png" # 你的原图
OUTPUT_FILE = "out.jpg" # 输出,后缀 .jpg/.png/.gif
try:
process_image(INPUT_FILE, OUTPUT_FILE, target_size=(300, 200), max_kb=100)
except Exception as e:
print(f"处理出错:{e}")
使用说明
- 修改
INPUT_FILE为你的图片文件路径 - 修改
OUTPUT_FILE设置输出文件名,后缀决定输出格式.jpg/.png/.gif - 输出强制固定 宽300px,高200px
- JPG会自动降低画质,保证文件小于100KB;PNG/GIF受编码限制,如果原图色彩复杂有可能略超100KB。
如果你需要:批量处理文件夹全部图片、不裁剪改为等比例缩放留黑边、或者GUI版本,告诉我,我直接改代码。