Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

CentOS ImageMagick 批量圖片處理:壓縮、格式轉換、水印一鍵搞定

編輯:關於 Linux

ImageMagick 是 Linux 下最強大的命令行圖片處理工具箱。本文實戰演示 CentOS 安裝配置,並提供批量壓縮、格式轉換、添加水印的生產級 Shell 腳本。

安裝驗證

# CentOS/RHEL
yum install -y ImageMagick

# Ubuntu/Debian
apt install -y imagemagick

# 驗證
convert -version
# Version: ImageMagick 6.9.10-68 Q16 x86_64 2021-10-14

核心命令速查

任務命令範例
壓縮尺寸convert input.jpg -resize 800x600 output.jpg
按比例壓縮convert input.jpg -resize 50% output.jpg
質量壓縮convert input.jpg -quality 85 output.jpg
格式轉換convert input.png output.jpg
添加文字水印convert input.jpg -font DejaVu-Sans -pointsize 24 -draw "gravity southeast fill black text 10,10 'Watermark' fill white text 11,11 'Watermark'" output.jpg
添加圖片水印convert input.jpg watermark.png -gravity southeast -composite output.jpg

生產級批量處理腳本

腳本一:批量壓縮並重命名

#!/bin/bash
# compress_images.sh - 批量壓縮當前目錄下所有 jpg/png/gif
# 用法:./compress_images.sh [目標寬度] [質量]

TARGET_WIDTH=${1:-1920}
QUALITY=${2:-85}

mkdir -p compressed
shopt -s nocaseglob

for img in *.jpg *.jpeg *.png *.gif; do
    [ -f "$img" ] || continue
    echo "Processing: $img"
    convert "$img" -resize "${TARGET_WIDTH}x>" -quality "$QUALITY" "compressed/${img%.*}_w${TARGET_WIDTH}.${img##*.}"
done

echo "Done. Compressed images in ./compressed/"

腳本二:BMP 轉 JPG 並清理源文件

#!/bin/bash
# bmp2jpg.sh - 遞歸轉換 BMP 為 JPG

find . -type f -iname "*.bmp" | while read bmp_file; do
    jpg_file="${bmp_file%.*}.jpg"
    echo "Converting: $bmp_file -> $jpg_file"
    convert "$bmp_file" -quality 90 "$jpg_file" && rm "$bmp_file"
done

腳本三:遞歸目錄添加水印

#!/bin/bash
# watermark.sh - 為圖片添加文字水印

WATERMARK_TEXT="© YourCompany 2024"
FONT_SIZE=20
COLOR="rgba(255,255,255,0.7)"

find . -type f \( -iname "*.jpg" -o -iname "*.png" \) | while read img; do
    echo "Watermarking: $img"
    convert "$img" -font DejaVu-Sans -pointsize $FONT_SIZE \
        -fill "$COLOR" -gravity southeast \
        -annotate +10+10 "$WATERMARK_TEXT" \
        "$img.watermarked" && mv "$img.watermarked" "$img"
done

性能優化技巧

  • 並行處理:find . -name "*.jpg" | xargs -P 4 -I {} convert {} -resize 50% {}
  • 使用 mogrify 就地修改(無輸出文件開銷)
  • 大批量任務考慮 GNU Parallel

常見問題排查

  • convert: not authorized → 編輯 /etc/ImageMagick-6/policy.xml 移除 <policy domain="coder" rights="none" pattern="PDF" /> 等限制
  • 內存不足:設置 MAGICK_MEMORY_LIMIT=2GiB MAGICK_MAP_LIMIT=4GiB
  • 字體缺失:安裝 dejavu-sans-fonts 或指定存在字體路徑

掌握 ImageMagick 腳本化能力,讓圖片批量處理從繁瑣走向自動化。

Copyright © Windows教程網 All Rights Reserved