脚本如何转换图片格式

wen 实用脚本 28

本文目录导读:

脚本如何转换图片格式

  1. 方法一:使用 Python + Pillow 库
  2. 方法二:使用 OpenCV
  3. 方法三:使用 ImageMagick (命令行工具)
  4. 方法四:Shell 脚本(Linux/macOS)
  5. 常用格式对比
  6. 安装依赖

使用 Python + Pillow 库

from PIL import Image
import os
# 单文件转换
def convert_image(input_path, output_path, output_format):
    """
    转换图片格式
    input_path: 输入文件路径
    output_path: 输出文件路径
    output_format: 输出格式 (如 'PNG', 'JPEG', 'WEBP', 'BMP')
    """
    img = Image.open(input_path)
    img.save(output_path, format=output_format)
# 批量转换
def batch_convert(input_dir, output_dir, target_format):
    """批量转换文件夹内所有图片"""
    os.makedirs(output_dir, exist_ok=True)
    for filename in os.listdir(input_dir):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.webp')):
            input_path = os.path.join(input_dir, filename)
            # 修改扩展名
            output_filename = os.path.splitext(filename)[0] + f'.{target_format.lower()}'
            output_path = os.path.join(output_dir, output_filename)
            try:
                img = Image.open(input_path)
                img.save(output_path, format=target_format)
                print(f"转换成功: {filename} -> {output_filename}")
            except Exception as e:
                print(f"转换失败: {filename}, 错误: {e}")
# 使用示例
if __name__ == "__main__":
    # 单文件转换
    convert_image('input.jpg', 'output.png', 'PNG')
    # 批量转换
    batch_convert('./images', './converted', 'PNG')

使用 OpenCV

import cv2
import os
def convert_with_opencv(input_path, output_path):
    """
    使用OpenCV转换图片格式
    支持: jpg, png, bmp, webp等
    """
    # 读取图片
    img = cv2.imread(input_path)
    if img is None:
        print(f"无法读取图片: {input_path}")
        return False
    # 保存为指定格式
    success = cv2.imwrite(output_path, img)
    return success
# 批量转换
def batch_convert_opencv(input_dir, output_dir, target_ext='.png'):
    os.makedirs(output_dir, exist_ok=True)
    for filename in os.listdir(input_dir):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
            input_path = os.path.join(input_dir, filename)
            output_path = os.path.join(output_dir, 
                                     os.path.splitext(filename)[0] + target_ext)
            if convert_with_opencv(input_path, output_path):
                print(f"转换成功: {filename}")
            else:
                print(f"转换失败: {filename}")

使用 ImageMagick (命令行工具)

# 安装 ImageMagick
# macOS: brew install imagemagick
# Ubuntu: sudo apt-get install imagemagick
# 单文件转换
convert input.jpg output.png
# 批量转换(将所有jpg转为png)
mogrify -format png *.jpg
# 转换并指定质量
convert input.jpg -quality 90 output.webp

Shell 脚本(Linux/macOS)

#!/bin/bash
# 批量转换脚本
# 用法: ./convert_images.sh input_dir output_dir output_format
INPUT_DIR="${1:-./images}"
OUTPUT_DIR="${2:-./converted}"
FORMAT="${3:-png}"
mkdir -p "$OUTPUT_DIR"
for file in "$INPUT_DIR"/*.{jpg,png,jpeg,bmp,webp}; do
    if [ -f "$file" ]; then
        filename=$(basename "$file")
        name="${filename%.*}"
        # 使用 ImageMagick 转换
        convert "$file" "$OUTPUT_DIR/$name.$FORMAT"
        echo "转换完成: $filename -> $name.$FORMAT"
    fi
done

常用格式对比

格式 特点 适用场景
JPEG 有损压缩,文件小 照片、复杂图像
PNG 无损压缩,支持透明 图标、截图、UI元素
WEBP Google开发,压缩率高 网页图片
BMP 无压缩,文件大 需要高精度的场景
GIF 支持动画,256色 简单动画、图标

安装依赖

# Python依赖
pip install pillow
# 或
pip install opencv-python
# ImageMagick (如果使用命令行工具)
# macOS
brew install imagemagick
# Ubuntu/Debian
sudo apt-get install imagemagick

选择哪种方法取决于你的具体需求:

  • 简单转换:使用 ImageMagick 命令行
  • 需要编程控制:使用 Python + Pillow
  • 需要图像处理:使用 OpenCV

抱歉,评论功能暂时关闭!