前言:
ImageMagick在图像剪辑领域的地位基本等同于FFmpeg,和FFmpeg基本一样,在Linux下使用此工具的原因是该工具可以使用shell脚本批量剪辑,在Windows下就会比较麻烦一些了
那么,本文主要是记录一下ImageMagick的一些基本使用方式
此工具的安装见我的上一篇博客:
Linux|centos7|yum和编译安装ImageMagick记录-CSDN博客
ImageMagick由一组命令行工具组成,具体来说也就是 convert、mogrify、composite、montage、identify、compare、display、animate、stream、import 和 conjure,这 11 个命令。
其中最常用的,是 convert 和 mogrify
一,
图像文件格式转换
常见的图片格式有jpeg,jpg,png,bmp,webp这些,这个工具和FFmepg基本一样,也是以文件的后缀名来决定文件的编码格式,因此,图片慰文件的格式转换在这里是非常简单的
不过,需要注意的是,webp虽然是同等质量图片文件里最小的,但有些时候转换会由于未知原因失败,例如以下的示例,转换成webp格式的时候失败了,换了一种格式就成功了:
[root@centos7 ~]# convert 9a3e88091aa0253c4217bfe99aacba5.jpg -charcoal 8 444.webp
convert: partition 0 overflow (> 512K) `444.webp' @ error/webp.c/WriteWEBPImage/1125.
[root@centos7 ~]# convert 9a3e88091aa0253c4217bfe99aacba5.jpg -charcoal 8 444.jpeg
通常,如果对图片文件不做任何调整,只是文件格式转换,那么,命令如下:
convert 源文件名.源文件格式 新文件名.新文件格式
例如,我这个风景图片,格式是jpg的转换成bmp格式的:
[root@centos7 ~]# convert a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg 111.bmp
利用identify命令查看图片信息:
[root@centos7 ~]# identify a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg
a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg JPEG 889x500 889x500+0+0 8-bit sRGB 75209B 0.000u 0:00.000
[root@centos7 ~]# identify 111.bmp
111.bmp BMP 889x500 889x500+0+0 8-bit sRGB 1.27233MiB 0.000u 0:00.001
二、
图片压缩
[root@centos7 ~]# convert -monitor -quality 40 a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg -fuzz 10% -layers Optimize 444.jpeg
load image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
Composite/Image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
crop image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
Composite/Image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
classify image colors[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
reduce image colors[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 6098 of 6099, 100% complete
dither image colors[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 444499 of 444500, 100% complete
save image[444.jpeg]: 499 of 500, 100% complete
[root@centos7 ~]# id
id identify idiag-socket-details idn
[root@centos7 ~]# identify a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg
a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg JPEG 889x500 889x500+0+0 8-bit sRGB 75209B 0.000u 0:00.000
[root@centos7 ~]# identify 444.jpeg
444.jpeg JPEG 889x500 889x500+0+0 8-bit sRGB 41841B 0.000u 0:00.000
说明:-quality 40 缩减40的磁盘容量
-monitor 显示图片文件的处理过程
-fuzz 10% 色容差值
-layers Optimize 图层优化,如果有多个图层的话
可以看到,确实是压缩掉了一半容量,444.jpeg 才39k了嘛,原图75k
压缩前
压缩后
三、
图片特效---碳化
主要是参数 -charcoal 后面跟纹理深度,从实践来说,一般1或者2就可以了,太深反而效果不好看
[root@centos7 ~]# convert -monitor a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg -charcoal 1 -layers Optimize 444.jpeg
load image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
Morphology/Image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
Clamp/Image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
Morphology/Image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
Morphology/Image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
contrast-stretch image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
negate image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
Grayscale/Image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
Composite/Image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
crop image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% completelete
Composite/Image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
classify image colors[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
dither image colors[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 444499 of 444500, 100% complete
save image[444.jpeg]: 499 of 500, 100% complete
[root@centos7 ~]# identify a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg
a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg JPEG 889x500 889x500+0+0 8-bit sRGB 75209B 0.000u 0:00.000
[root@centos7 ~]# identify 444.jpeg
444.jpeg JPEG 889x500 889x500+0+0 8-bit Gray 256c 78679B 0.000u 0:00.000
效果1:
效果10:
效果3:
四、
图片特效---模糊
[root@centos7 ~]# convert -monitor -blur 0x3 a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg 444.jpeg
load image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
Morphology/Image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
Morphology/Image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
save image[444.jpeg]: 499 of 500, 100% complete
[root@centos7 ~]# identify a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg
a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg JPEG 889x500 889x500+0+0 8-bit sRGB 75209B 0.000u 0:00.000
[root@centos7 ~]# identify 444.jpeg
444.jpeg JPEG 889x500 889x500+0+0 8-bit sRGB 29842B 0.000u 0:00.000
[root@centos7 ~]# convert -monitor -blur 3x3 a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg 444.jpeg
load image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
Morphology/Image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
Morphology/Image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
save image[444.jpeg]: 499 of 500, 100% complete
五、
图片上添加文字,使用默认的字体,
[root@centos7 ~]# convert -monitor -fill green -pointsize 40 -draw 'text 10,50 "fuck man"' a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg 444.webp
load image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
save image[444.webp]: 499 of 500, 100% complete
encode image[444.webp]: 99 of 100, 100% complete
[root@centos7 ~]# convert -monitor -fill red -pointsize 100 -draw 'text 10,50 "fuck man"' a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg 444.webp
load image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
save image[444.webp]: 499 of 500, 100% complete
encode image[444.webp]: 99 of 100, 100% complete
[root@centos7 ~]# convert -monitor -fill red -pointsize 100 -draw 'text 50,100 "fuck man"' a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg 444.webp
load image[a9453488a2b714dbca4e2c1f9a8b8e9f.jpeg]: 499 of 500, 100% complete
save image[444.webp]: 499 of 500, 100% complete
encode image[444.webp]: 99 of 100, 100% complete
未完待续!@!!@@!!!!