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版本,告诉我,我直接改代码。

相关推荐
羲云网络35 分钟前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
去伪存真1 小时前
AI Agent Harness 深度测评与技术选型实战
前端·agent
且从容.2 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道3 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
FRing034 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
橙橙笔记4 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
小小张说故事4 小时前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python
且从容.6 小时前
ubuntu安装flink
linux·ubuntu·flink
天天被压力6 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力6 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python