鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[其他] 火爆全球的主流图片压缩方案自动化脚本(有彩蛋)

[复制链接]
发表于 2025-8-12 17:37:58 | 显示全部楼层
朕想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-13 10:55:12 | 显示全部楼层
朕想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-25 17:23:37 | 显示全部楼层
import tinify
import sys
from pathlib import Path

tinify.key = "lb7LHzn0hQM2fQTb7FhhByQKRqnK08v4"

def img_size():
    file_path = set_form()
    num = len(file_path)
    set_size = input("请输入尺寸(宽度 高度):")
    for i,each in enumerate(file_path,start=1):
            print(f"({i}/{num})图片<{each.name}>正在压缩处理中,请稍后...")
            source = tinify.from_file(each)
            img = each.name
            if not set_size:
                source.to_file(f"oct_{img}")
            else:
                _ = set_size.split(" ")
                x,y = int(_[0]),int(_[1])
                if y == 0:
                    method = "scale"
                    resized = source.resize(method,width=x)
                elif x == 0:
                    method = "scale"
                    resized = source.resize(method,height=y)
                else:
                    method = "fit"
                    resized = source.resize(method,width=x,height=y)
                resized.to_file(f"oct_{img}")

def set_form():
    file_path = []
    ins = input("请输入需要压缩的图片名称(回车优化当前文件夹):")
    if ins == "":
        x = ['.jpg','.png','.webp']
        print("开始优化当前文件夹下所有的jpg/png/webp图片")
    elif ins == '.jpg':
        x = ['.jpg']
        print("开始优化当前文件夹下所有的jpg图片")
    elif ins == '.png':
        x = ['.png']
        print("开始优化当前文件夹下所有的png图片")
    elif ins == '.webp':
        x = ['.webp']
        print("开始优化当前文件夹下所有的webp图片")
    for each in x:
        file_path.extend(Path(".").glob(f"*{each}"))
    return file_path

def get_file():
    dragged_path = sys.argv[1:]
    files = []
    target = ['.jpg','.png','.webp']
    for each in dragged_path:
        file_path = Path(each)
        if file_path.exists() and file_path.suffix.lower() in target:
            files.append(file_path)
        else:
            print(f"警告:路径无效或不是文件 → {file_path}")

    return files

if __name__ == "__main__":
    files = get_file()
    if files:
        num = len(files)
        for i,each in enumerate(files,start=1):
            print(f"({i}/{num})图片<{each.name}>正在压缩处理中,请稍后...")
            img_size(each.name)
    else:
        img_size()
    print("全部处理完成~")
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
【朕想知道】
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 16:12 | 显示全部楼层
我现在想直接看代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-6 05:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表