convert

来自百合仙子's Wiki
跳转到导航 跳转到搜索

命令行上的图像处理。如果要修改原图片,可以考虑 mogrify 命令。

参数

-auto-orient
根据 EXIF 信息旋转图片并重置 EXIF 中的方向信息
-border geometry
加边框。geometry4x4
-bordercolor color
设定边框颜色
-crop geometry
剪裁。参数如 400x32+0+0。如果不给出偏移,会产生一堆图片。
-density value
指定渲染时的解析度(单个数值或者widthxheight)。默认单位为 dpi。在转换矢量图为点阵图时很有用
-extent geometry
改变图片大小。原图的放置受 gravity 的影响
-font
指定字体,如文泉驿正黑。字体名可使用-list font参数列出。
-fuzz distance[%]
颜色阈值
-gravity direction
影响后续操作的方向,direction可为东南西北中
-list font
列出所有可用字体。ImageMagick 使用的字体名称与 fontconfig 的不一样,比如空格变成了连字符。
-trim
剪裁图像,与图片边框颜色相同的地方会被剪裁掉。
-strip
删除图像的 EXIF、注释等辅助信息。

示例用法

ico -> png

convert firefox.ico[0] firefox.png

pdf -> png

convert -density 150x150 test.pdf -alpha off -density 150x150 %0003d.png

QR码 -> png

使用 zint 来生成 QR码,但是使用 convert 命令以便取得指定大小的图像:

zint -b 58 --binary --directsvg -d http://blog.lilydjwg.me/ | convert -density 600 -resize 128x128 - output.png

转换成grub所用的格式

未测试。[1]

convert -resize 640x480 -colors 14 wallpaper.png splashimage.xpm && gzip splashimage.xpm
convert slax.png -resize 640x480 -colors 14 -depth 8 splash.xpm

添加阴影

convert - \( +clone -background black -shadow 80x10+5+5 \) +swap -background white -layers merge +repage png:-

手撕纸张效果

[2]

#!/bin/bash
src=xxx
dst=yyy

convert "$src" \( +clone -threshold -1 -virtual-pixel black -spread 10 -blur 0x3 -threshold 50% -spread 1 -blur 0x.7 \) +matte -compose Copy_Opacity -composite "$dst"
mogrify "$dst" \( +clone -background black  -shadow 80x3+5+5 \) +swap -background none -mosaic +repage

文本相关

给图片(下方)添加文本附注[3]

convert test.png -font 文泉驿正黑 -pointsize 30 -background white label:附注文本 -gravity center -append t.png

生成马赛克

convert -size 32x32 xc: +noise Random -scale 512x512\! mosaic.png

添加圆角

[4]

r=$3
convert "$1" \
  \( +clone  -alpha extract \
    -draw "fill black polygon 0,0 0,$r $r,0 fill white circle $r,$r $r,0" \
    \( +clone -flip \) -compose Multiply -composite \
    \( +clone -flop \) -compose Multiply -composite \
  \) -alpha off -compose CopyOpacity -composite "$2"

添加水印并调整

convert source.png watermark.png -gravity southeast -compose dissolve -define compose:args=50 -composite -resize 200x200 -interlace PNG output.png

另见 composite

连接图片

convert -background transparent -gravity center -append "$@"

添加文字并连接图片

convert -font 'DejaVu-Serif' \
  \( JhengHei.png -pointsize 20 label:'Microsoft JhengHei' -gravity SouthEast -compose dissolve -composite \) \
  \( Source.png -pointsize 20 label:'Source Han Sans TW' -gravity SouthEast -compose dissolve -composite \) \
  -append result.png

效果如下:

填充到指定大小

缩小原图,以透明填充,原图在左边:

convert -resize 40x40 in.png -gravity west -background transparent -extent 512x40 out.png

去除透明

convert -background white -alpha remove a.png b.png

[5]

添加透明

convert a.png -fuzz 50% -transparent white b.png

[6]

截图然后灰度显示

import png:- | convert - -grayscale Rec709Luma - | display -

转换为指定调色盘的像素画

# 从已有图片生成调色盘
convert a.png -colors 8 -unique-colors colors.png
# 转换图片
convert -resize 5% -scale 2000% +dither -remap colors.png -type Palette source.png dest.png

只保留指定颜色并显示

convert image.jpg -matte \( +clone -fuzz 15% -transparent '#20B44B' \) -compose DstOut -composite -background black -alpha remove png:- | display -

模糊图片时处理好 gamma

将模糊操作放在调整 gamma 的操作中间即可:

convert input.png -gamma .45455 -blur 4x4 -gamma 2.2 output.png

隐写数据到图片

[7]

convert -depth 8 yt_dl1.png rgb:yt_dl1.part
convert -depth 8 yt_dl2.png rgb:yt_dl2.part
cat yt_dl1.part yt_dl2.part > yt_dl-2020.9.20.tar.gz

参见

外部链接

参考资料