|
发表于 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("全部处理完成~") |
|