Skip to content

用ImageMagick批处理图像

加边框

#!/usr/bin/env fish
# Add border of 1 px
for img in *.png
    magick $img -bordercolor black -border 1 $img
end

调色

扫描仪扫出来的色彩可能会发灰。不同画材受的影响不一样,所以可能需要根据 画材调整。

# 适合丙烯,彩铅,不适合水彩
  magick "$input" \
    -normalize \
    -level '5%,95%' \
    -sharpen 0x1 \
    -modulate 100,120,100 \
    "$output_a"

# 适合水彩
  magick "$input" \
    -level '5%,95%' \
    -sharpen 0x1 \
    -modulate 100,120,100 \
    "$output_b"

以下已过期

写一个Makefile,专门准备一个文件夹放需要处理的图片,在这个文件夹终端跑

make small # 全部图片生成640x480大小的版本,并加上small前缀
make medium # 同理
make all # 生成480x360的特小版本作为thumb nail使用,并挂上th前缀
make frame # 图片加上黑色细边框,并加上前缀f
make fancy # 好像是图片加上黑色带阴影的边框

(补充:由于版本迭代,需要顺应新版的imagemagick,修改一下代码)

#conver image size
all:
    @for k in *.jpg; \
        do \
        echo $$k ; \
        name=`echo $$k | cut -f1 -d.`; \
        convert -geometry 480x360 $$k th$${name}.jpg; \
        done
small:
    @for k in *.jpg; \
        do \
        echo $$k ; \
        name=`echo $$k | cut -f1 -d.`; \
        convert -geometry 640x480 $$k small$${name}.jpg; \
        done
medium:
    @for k in *.jpg; \
        do \
        echo $$k ; \
        name=`echo $$k | cut -f1 -d.`; \
        convert -geometry 800x600 $$k medium$${name}.jpg; \
        done
frame:
    @for k in *.jpg; \
        do \
        echo $$k ; \
        name=`echo $$k | cut -f1 -d.`; \
        magick $$k -bordercolor black -border 1 -depth 8 -colors 256 -quality 90 f$${name}.jpg; \
        done

fancy:
    @for k in *.jpg; \
        do \
        echo $$k ; \
        name=`echo $$k | cut -f1 -d.`; \
        convert -bordercolor black -border 1 $$k -background none \( +clone -shadow 80x2+2+2 \) +swap -background white -flatten -depth 8 -colors 256 -quality 90 f$${name}.jpg; \
        done
fancy5:
    @for k in *.jpg; \
        do \
        echo $$k ; \
        name=`echo $$k | cut -f1 -d.`; \
        convert -geometry 50%x50% -bordercolor black -border 1 $$k -background none \( +clone -shadow 80x2+2+2 \) +swap -background white -flatten -depth 8 -colors 256 -quality 90 f$${name}.jpg; \
        done
fancy4:
    @for k in *.jpg; \
        do \
        echo $$k ; \
        name=`echo $$k | cut -f1 -d.`; \
        convert -geometry 40%x40% -bordercolor black -border 1 $$k -background none \( +clone -shadow 80x2+2+2 \) +swap -background white -flatten -depth 8 -colors 256 -quality 90 f$${name}.jpg; \
        done