📝 脚本集合 - 日常用 🌀

图片处理

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)
...
...