📝 脚本集合 - 日常用 🌀
图片处理
png图片降低分辨率
vlc 4k电影截图,分辨率太高,压缩图片
脚本: python(pillow)
# compress_images.py
import os
from PIL import Image
import argparse
def compress_images(input_dir, output_dir, quality=85, compress_level=9, max_width=1920):
"""
压缩目录中的所有PNG图片并缩放尺寸
参数:
input_dir: 输入目录路径
output_dir: 输出目录路径
quality: 图片质量(1-100)
compress_level: PNG压缩级别(0-9)
max_width: 最大宽度(保持宽高比)
"""
os.makedirs(output_dir, exist_ok=True)
for filename in os.listdir(input_dir):
if filename.lower().endswith('.png'):
input_path = os.path.join(input_dir, filename)
base_name = os.path.splitext(filename)[0]
output_filename = f"{base_name}.png"
output_path = os.path.join(output_dir, output_filename)
try:
with Image.open(input_path) as img:
# 尺寸缩放(保持宽高比)
if img.width > max_width:
ratio = max_width / img.width
new_height = int(img.height * ratio)
img = img.resize((max_width, new_height), Image.LANCZOS)
# 保存压缩后的图片
img.save(
output_path,
optimize=True,
quality=quality,
compress_level=compress_level
)
print(f"处理成功: {filename} ({img.width}x{img.height})")
except Exception as e:
print(f"处理 {filename} 时出错: {str(e)}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='PNG图片压缩缩放脚本')
parser.add_argument('input_dir', help='原始图片目录路径')
parser.add_argument('output_dir', help='输出目录路径')
parser.add_argument('--quality', type=int, default=85,
help='图片质量(1-100,默认85)')
parser.add_argument('--compress_level', type=int, default=9,
choices=range(0, 10), metavar="0-9",
help='PNG压缩级别(默认9)')
parser.add_argument('--max_width', type=int, default=1920,
help='最大宽度(保持宽高比,默认1920)')
args = parser.parse_args()
compress_images(
args.input_dir,
args.output_dir,
args.quality,
args.compress_level,
args.max_width
)
使用
$ python3 compress_images.py ./pics_todo ./pics_done --compress_level 9
处理成功: dune-10.png (1920x803)
处理成功: dune-11.png (1920x803)
...
...