怎样用脚本批量调整图片色相?

wen 实用脚本 2

本文目录导读:

怎样用脚本批量调整图片色相?

  1. 方法一:使用 Python + Pillow(推荐)
  2. 方法二:使用 OpenCV
  3. 方法三:批处理脚本(Windows)
  4. 方法四:使用 Bash 脚本(Linux/Mac)
  5. 安装依赖
  6. 使用建议

使用 Python + Pillow(推荐)

import os
from PIL import Image
import colorsys
def adjust_hue(image, hue_shift):
    """调整图片色相"""
    # 转换为RGBA模式以保留透明度
    if image.mode != 'RGBA':
        image = image.convert('RGBA')
    # 获取像素数据
    pixels = list(image.getdata())
    new_pixels = []
    for pixel in pixels:
        r, g, b, a = pixel
        # 转换为HSV
        h, s, v = colorsys.rgb_to_hsv(r/255, g/255, b/255)
        # 调整色相
        h = (h + hue_shift) % 1.0
        # 转回RGB
        r, g, b = colorsys.hsv_to_rgb(h, s, v)
        new_pixels.append((int(r*255), int(g*255), int(b*255), a))
    # 创建新图像
    new_image = Image.new('RGBA', image.size)
    new_image.putdata(new_pixels)
    return new_image
def batch_adjust_hue(input_folder, output_folder, hue_shift=0.1):
    """批量调整色相"""
    # 创建输出文件夹
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    # 支持的图片格式
    supported_formats = ('.jpg', '.jpeg', '.png', '.bmp', '.tiff')
    # 遍历文件夹中的所有图片
    for filename in os.listdir(input_folder):
        if filename.lower().endswith(supported_formats):
            input_path = os.path.join(input_folder, filename)
            output_path = os.path.join(output_folder, filename)
            try:
                # 打开图片
                img = Image.open(input_path)
                # 调整色相
                adjusted_img = adjust_hue(img, hue_shift)
                # 保存图片
                adjusted_img.save(output_path)
                print(f"已处理: {filename}")
            except Exception as e:
                print(f"处理 {filename} 时出错: {e}")
# 使用示例
if __name__ == "__main__":
    input_folder = "images_input"  # 输入文件夹
    output_folder = "images_output"  # 输出文件夹
    hue_shift = 0.2  # 色相偏移量(0-1之间,0.2表示偏移72度)
    batch_adjust_hue(input_folder, output_folder, hue_shift)

使用 OpenCV

import cv2
import numpy as np
import os
from pathlib import Path
def adjust_hue_cv2(image, hue_shift):
    """使用OpenCV调整色相"""
    # 转换为HSV
    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    # 调整色相
    hsv[:, :, 0] = (hsv[:, :, 0] + hue_shift) % 180
    # 转回BGR
    return cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
def batch_adjust_hue_cv2(input_folder, output_folder, hue_shift=30):
    """批量调整色相(OpenCV版本)"""
    Path(output_folder).mkdir(parents=True, exist_ok=True)
    supported_formats = ('.jpg', '.jpeg', '.png', '.bmp', '.tiff')
    for path in Path(input_folder).glob('*'):
        if path.suffix.lower() in supported_formats:
            try:
                # 读取图片
                img = cv2.imread(str(path))
                if img is not None:
                    # 调整色相
                    adjusted = adjust_hue_cv2(img, hue_shift)
                    # 保存
                    output_path = Path(output_folder) / path.name
                    cv2.imwrite(str(output_path), adjusted)
                    print(f"已处理: {path.name}")
            except Exception as e:
                print(f"处理 {path.name} 时出错: {e}")
# 使用示例
if __name__ == "__main__":
    input_folder = "images_input"
    output_folder = "images_output"
    hue_shift = 30  # 色相偏移(0-180,30表示偏移30度)
    batch_adjust_hue_cv2(input_folder, output_folder, hue_shift)

批处理脚本(Windows)

创建 adjust_hue.bat 文件:

@echo off
echo 正在批量调整图片色相...
echo 请确保已安装 ImageMagick
:: 设置参数
set INPUT_FOLDER=images_input
set OUTPUT_FOLDER=images_output
set HUE_SHIFT=30
:: 创建输出文件夹
if not exist "%OUTPUT_FOLDER%" mkdir "%OUTPUT_FOLDER%"
:: 使用 ImageMagick 批量处理
echo 处理中...
for %%f in ("%INPUT_FOLDER%\*.jpg" "%INPUT_FOLDER%\*.png") do (
    echo 正在处理: %%~nxf
    magick "%%f" -modulate 100,100,%HUE_SHIFT% "%OUTPUT_FOLDER%\%%~nxf"
)
echo 处理完成!
pause

使用 Bash 脚本(Linux/Mac)

#!/bin/bash
# 批量调整图片色相的Bash脚本
# 需要安装 ImageMagick
INPUT_FOLDER="images_input"
OUTPUT_FOLDER="images_output"
HUE_SHIFT=30  # 色相偏移值(0-200)
# 创建输出文件夹
mkdir -p "$OUTPUT_FOLDER"
# 处理图片
for img in "$INPUT_FOLDER"/*.{jpg,jpeg,png,bmp,tiff}; do
    if [ -f "$img" ]; then
        filename=$(basename "$img")
        echo "处理中: $filename"
        # 使用 ImageMagick 调整色相
        convert "$img" -modulate 100,100,$HUE_SHIFT "$OUTPUT_FOLDER/$filename"
    fi
done
echo "批量处理完成!"

安装依赖

Python 依赖安装:

pip install Pillow
# 或
pip install opencv-python

ImageMagick 安装:

  • Windows: 下载安装包 https://imagemagick.org/script/download.php
  • Linux: sudo apt-get install imagemagick
  • Mac: brew install imagemagick

使用建议

  1. 选择合适的工具

    • 简单任务:ImageMagick 批处理
    • 需要精细控制:Python + Pillow
    • 视频处理:OpenCV
  2. 色相值说明

    • Pillow(HSV):0-1之间的值
    • OpenCV:0-180之间的值
    • ImageMagick:0-200之间的值
  3. 备份原图:批量处理前建议先备份原始图片

  4. 测试:先处理少量图片测试效果,再批量处理全部

选择最适合你的方法,有任何问题随时问我!

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