Python 图片处理:裁剪缩放至300×200,格式JPG/PNG/GIF,控制大小≤100KB

Python 图片处理:裁剪缩放至300×200,格式JPG/PNG/GIF,控制大小≤100KB

使用Pillow库,功能:

  1. 强制输出尺寸 300 × 200
  2. 支持输入 JPG,PNG,GIF
  3. 循环调节质量,把文件压到100KB以内
  4. 保存输出文件

安装依赖

复制代码
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}")

使用说明

  1. 修改 INPUT_FILE 为你的图片文件路径
  2. 修改 OUTPUT_FILE 设置输出文件名,后缀决定输出格式 .jpg / .png / .gif
  3. 输出强制固定 宽300px,高200px
  4. JPG会自动降低画质,保证文件小于100KB;PNG/GIF受编码限制,如果原图色彩复杂有可能略超100KB。

如果你需要:批量处理文件夹全部图片、不裁剪改为等比例缩放留黑边、或者GUI版本,告诉我,我直接改代码。

相关推荐
子兮曰5 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰5 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
默_笙5 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
未济5 天前
linux 配置环境变量
linux
傲世仙尊5 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
前端小万5 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝5 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
qq_426003965 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫5 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
三十而立洋5 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript