上一篇文章制作每日一句插件的过程中,使用了 ImageMagick 来自动生成打卡图片,其生成速度较快,而且命令行参数很多,作为一个开源的命令行图像处理工具,本篇博文来挖掘一下更多的用法,为了活学活用,插图均由 ImageMagick 来进行生成。
1.基本安装
以下为不同平台命令行安装方法,也可以去官网上下载对应的可执行文件。
1
|
yay install imagemagick
|
macOS 需要安装 Ghostscript fonts
1
2
|
brew install imagemagick
brew install ghostscript
|
Windows 两条命令二选一,需要安装对应的包管理器
1
2
3
|
scoop install imagemagick
# 或者
choco install imagemagick
|
2. 基本图片处理
2.1 查看图片信息
得到如下结果:
old.png JPEG 690x690 690x690+0+0 8-bit sRGB 70632B 0.000u 0:00.000
2.2 比较两个图片之间差异
使用compare命令,具体可参考官方文档
1
|
compare rose.jpg reconstruct.jpg difference.png
|
2.3 格式转换
- GIF:支持256种颜色
- JPEG:转换成JPG会损失信息
- PNG:保存所有颜色,不会损失信息
输出pdf
1
|
conert 01.jpg 02.png 1.pdf
|
pdf输出为图片(指定分辨率和质量,并进行切边)
1
|
convert -density 150 -background white -alpha remove download.pdf download.jpg
|
批量格式转换
1
|
mogrify -path newdir -format png *.gif
|
将当前目录下的所有 gif 文件,转换为 png 格式,并将其存放在 newdir 目录下
2.4 改变图片大小
2.4.1缩放
1
|
convert -scale 50% old.gif new.png
|
特定大小,不考虑形变影响
1
|
convert image.png -resize 200x100! out.png
|
指定宽度
1
|
convert image.png -resize 200 out.png
|
指定高度
1
|
convert image.png -resize x100 out.png
|
批量缩放
1
|
mogrify -path newdir -resize 200% *.png
|
2.4.2 裁剪
自动裁剪
1
|
convert -trim cat.png cat.png
|
在指定位置裁剪,+repage 的作用是重置图像内部的信息
1
|
convert -crop 853x368+0+56 old.png +repage new.png
|
853和368是输出图片的宽度和高度,0和56是裁剪的起点
剔除不需要的部分(左右两边剔除 100 像素,上下两边剔除 50 像素)
1
|
convert image.png -shave 100x50 out.png
|
除非特殊情况,不然每次使用 -crop 类语句时,都应加上 +repage
2.5 色彩、亮度和饱和度
三个参数分别为亮度、饱和度和色调
1
|
convert -modulate 150,100,100 old.png new.png
|
2.6 旋转与翻转
顺时针旋转(角度负值代表逆时针)
1
|
convert image.jpg -rotate 90 image-rotated.jpg
|
左右翻转
1
|
convert image.png -flop out.png
|
上下翻转
1
|
convert image.png -flip out.png
|
自动倾斜矫正
1
|
convert page100.png -background white -deskew 40% deskewed.png
|
2.7 透明度、色彩与位深度
2.7.1 透明背景变成黑色
1
|
convert -flatten old.png new.png
|
2.7.2 转为灰度
1
|
convert -type Grayscale old.png new.png
|
2.7.3 降低图片的位深度
1
|
convert old.png -depth 8 new.png
|
2.7.4 减少图片色彩
1
|
convert old.png -dither -colors 256 new.png
|
2.8 图片合并
1
|
montage -mode concatenate -tile 1x cat1.jpg cat2.jpg out.jpg
|
纵向合并
1
|
convert x1.png x2.png x3.png -append out.png
|
横向合并
1
|
convert x1.png x2.png x3.png +append out.png
|
2.9 添加边框
1
|
convert -border 1 -bordercolor black old.png new.png
|
2.10 添加文字
1
|
convert -fill red -draw 'text 20 20 "© 2006 example.com"' old.png new.png
|
3. 图片滤镜
3.1 锐化与虚化
锐化
1
|
convert -sharpen 2 old.png new.png
|
虚化
1
|
convert -blur 1 old.png new.png
|
3.2 其他效果
3.2.1 加噪声
1
|
convert -noise 3 old.png new.png
|
3.2.2 油画效果
1
|
convert -paint 4 old.png new.png
|
3.2.3 铅笔画效果
1
|
convert -charcoal 2 old.png new.png
|
3.2.4 散射效果
1
|
convert -spread 30 old.png new.png
|
3.2.5 漩涡效果
1
|
convert -swirl 67 old.png new.png
|
4. 色彩处理
4.1 反色处理
类似底片效果
1
|
convert -negate old.png new.png
|
4.2 黑白颜色
-threshold 的作用是在颜色世界划一条线,线上的为白,线下的为黑。
1
|
convert -monochrome old.png new.png
|
4.3 使用level变换颜色
1
2
|
convert old.png -level 25%,75% new.png
convert old.png -level 25% new.png
|
-level 命令后面如果跟两个参数(用逗号分开),第1个参数 25% 表示将原图颜色中最暗的 25% 变为黑,第二参数 75% 则表示将最亮的 25% 为白。剩下的依线性变换。
当省略第二个参数时,两者取同样的值,因此上面两条命令实际上是一致的。
-level 后面还可以跟第三个参数,用第3个参数来调整 gamma 值,直线变成了曲线。
4.4 sigmoidal 非线性对比度变换
1
|
convert old.png -sigmoidal-contrast 10,50% new.png
|
4.5 增加对比度
1
2
|
convert gray_range.jpg -normalize normalize_gray.jpg
convert gray_range.jpg -contrast-stretch 15% stretch_gray.jpg
|
5.生成画布
5.1 单色画布
1
2
|
convert -size 100x100 xc:blue canvas_blue.png
convert -size 100x100 xc:rgb(0,0,255) canvas_blue.png
|
5.2 渐变画布
1
2
3
|
convert -size 100x100 gradient: gradient.jpg
convert -size 100x100 gradient:blue gradient_blue.jpg
convert -size 100x100 gradient:red-blue gradient_red_to_blue.jpg
|
5.3 内置纹理
1
|
convert -size 640x480 pattern:checkerboard checkerboard.png
|
参考
- Examples of ImageMagick Usage (Version 6) https://imagemagick.org/Usage/
- mageMagick Tutorial http://xahlee.info/img/imagemagic.html
- ImageMagicK 常用命令 https://www.hahack.com/wiki/tools-imagemagick.html
- imagemagick对于图像处理的一些方式 https://blog.csdn.net/mo3408/article/details/80671398
- ImageMagick:批量处理图像的超级利器 https://bbs.gxsd.com.cn/forum.php?mod=viewthread&tid=253184
- ImageMagick v6 Examples – Color Modifications http://www.imagemagick.org/Usage/color_mods/
- 图像处理 - ImageMagick 简单介绍与案例 https://aotu.io/notes/2018/06/06/ImageMagick_intro/index.html