ImageMagick命令行使用教程示例详解

HipPop 2019-02-21

ImageMagick (TM) 是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。

ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。它遵守GPL许可协议。它可以运行于大多数的操作系统。ImageMagick的大多数功能的使用都来源于命令行工具。通常来说,它可以支持以下程序语言: Perl, C, C++, Python, PHP, Ruby, Java;现成的ImageMagick接口(PerlMagick, Magick++, PythonMagick, MagickWand for PHP, RubyMagick, and JMagick)是可利用的。这使得自动的动态的修改创建图片变为可能。

ImageMagick支持至少90种图片格式: A, ART, AVI, AVS, B, BIE, BMP, BMP2, BMP3, C, CACHE, CAPTION, CIN, CIP, CLIP, CLIPBOARD, CMYK, CMYKA, CUR, CUT, DCM, DCX, DNG, DOT, DPS, DPX, EMF, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, FAX, FITS, FPX, FRACTAL, G, G3, GIF, GIF87, GRADIENT, GRAY, HDF, HISTOGRAM, HTM, HTML, ICB, ICO, ICON, JBG, JBIG, JNG, JP2, JPC, JPEG, JPG, JPX, K, LABEL, M, M2V, MAP, MAT, MATTE, MIFF, MNG, MONO, MPC, MPEG, MPG, MSL, MTV, MVG, NULL, O, OTB, P7, PAL, PALM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PFA, PFB, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG24, PNG32, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSD, PTIF, PWP, R, RAS, RGB, RGBA, RGBO, RLA, RLE, SCR, SCT, SFW, SGI, SHTML, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, TIF, TIFF, TILE, TIM, TTC, TTF, TXT, UIL, UYVY, VDA, VICAR, VID, VIFF, VST, WBMP, WMF, WMFWIN32, WMZ, WPG, X, XBM, XC, XCF, XPM, XV, XWD, Y, YCbCr, YCbCrA, YUV

ImageMagick 包括一组命令行工具来操作图片。你大部份习惯每次编辑图片都提供图形用户接口 (GUI) 编辑图像就像GIMP和PhotoShop一样。然而,一个图形用户接口不总是方便的。假如你想要从一个网页动态地处理一个图像,或者你在不同时间生成一样的或不同的图像,想要对许多图像或重复特定应用相同的操作。对于操作的这些类型,处理公用程序命令行工具是一个好的选择。

在下面的段落中,可以找到命令行工具的简单短描述。点击程序名称可以得到关于这个程序的具体用法。如果你想得到更多的关于ImageMagick,请仔细阅读以下命令行工具的使用方法:

convert

转换图像格式和大小,模糊,裁剪,驱除污点,抖动,临近,图片上画图片,加入新图片,生成缩略图等。

identify

描述一个或较多图像文件的格式和特性。

mogrify

按规定尺寸制作一个图像,模糊,裁剪,抖动等。Mogrify改写最初的图像文件然后写到一个不同的图像文件。

composite

根据一个图片或多个图片组合生成图片。

montage

创建一些分开的要素图像。在含有要素图像任意的装饰图片,如边框、结构、图片名称等。

compare

在算术上和视觉上评估不同的图片及其它的改造图片。

display

如果你拥有一个X server的系统,它可以按次序的显示图片

animate

利用X server显示动画图片

import

在X server或任何可见的窗口上输出图片文件。 你可以捕获单一窗口,整个的荧屏或任何荧屏的矩形部分。

conjure

解释执行 MSL (Magick Scripting Language) 写的脚本。

最为重要的是,ImageMagick的大多数功能的使用都来源于命令行工具。

示例一:综合操作(ImageMagick命令行)

ImageMagick命令行使用教程示例详解

处理过程解释:

2、然后把这部分缩小到200x200像素。

3、然后把颜色缩减到100色。
 4、+profile "*"  , 意味着在图片文件里不存储Exif信息,以减小图片体积。

5、最后生成linuxidc.jpg,保存在当前目录。

常用的参数用途说明:
 -crop 宽x高+起点横坐标+起点纵坐标:裁剪图
 -resize 宽x高!:改变尺寸,如果使用惊叹号,表示不保留视觉比例,强行改变尺寸匹配给定的宽和高;如果仅给定宽或者高,如“宽x”或“x高”形式的参数(“x高”与“宽x高”的效果是一样的),则以已知参数为基准按比例改变尺寸。
 -colors 颜色数:设定图片采用的颜色数,如果是生成png或gif图片应指定这个参数
 -quality 质量:设定jpeg图片输出质量,推荐采用80,此命令仅用于输出格式是jpg的情况,不应省略,省略的话默认质量是95,生成图片过大
 +profile "*":图片中不存储Exif信息,必须使用,否则生成图片过大

示例二:生成缩略图(缩小图片)

1.convert -sample 80x40 input.jpg output.jpg  (使用一个简单的算法生成缩略图,速度快,画质较低,适合生成100x100以下的图片) 
2.convert -resize 100x100 foo.jpg thumbnail.jpg (画质好) 
3.convert -resize 50%x50% foo.jpg thumbnail.jpg 
4.convert -resize 100x200 22.jpg(图片路径)  11.jpg(缩放后存放路径)  图片按比例缩放 
5.convert -resize 100x200\! 22.jpg(图片路径)  11.jpg(缩放后存放路径)  强制按给定的宽高缩放 
 
示例三:裁剪图片

示例四:旋转图像

1.convert -rotate 90 input.jpg output.jpg 
 
示例五:获取文件信息

1.libtiff tiffinfo filename.tiff 
 
示例六:把图片变为黑白颜色

ImageMagick命令行使用教程示例详解

原图如下:

ImageMagick命令行使用教程示例详解

转换后如下:

ImageMagick命令行使用教程示例详解

添加图片水印处理

假设把名为logo.gif的水印图标添加在原始图片(src.jpg)右下角,且水印的下边缘距原始图片10像素、右边缘距原始图片5像素。使用如下命令即可:

1.convert src.jpg logo.gif -gravity southeast -geometry +5+10 -composite dest.jpg 

添加英文文字水印

convert  -fill white -pointsize 24 -draw "text 10,15 'lifesinger 2006' "  1.png  2.png

文字坐标在:10x50的位置
可以用-font指定字体,这时需要安装Ghostscript支持。

如果安装IM、GM时,没有安装Ghostscript字体,会默认使用Linux系统的字体,目录是:/usr/share/fonts/default/Type1/

添加中文文字水印

高版本的ImageMagick的方法

convert -font C:\ImageMagick\font\fangzheng.ttf  -fill green -pointsize 40 -draw "text 10,50 '文字'" d:\bagImg\21.jpg d:\bagImg\22.jpg

参数说明: -font C:\ImageMagick\font\fangzheng.ttf    是指明Windows字体文件。

要高版本的ImageMagick同,在加中文文字水印时才不乱码。

低版本的ImageMagick的方法

存在中文的情况:假设存有信息的文件叫t.txt,字体文件是msyh.ttf。

1.方法1: 
2.//把文件t.txt中的信息生成图片txt.png, -transparent white让图片的背景透明,-size x30设置图片的高度 
3.convert -transparent white -font msyh.ttf -fill black -pointsize 24 label:@t.txt txt.png 
4.//把txt.png合成到src.jpg上 
5.convert src.jpg txt.png -gravity southeast -geometry +10+5 -composite dest.jpg 
6. 
7.方法2: 
8.convert src.jpg -transparent white -font msyh.ttf -fill black -pointsize 24 -size x30 label:@t.txt -gravity southeast -geometry +10+5 -composite dest.jpg 
9. 
10.方法3: 
11.mogrify -font msyh.ttf -pointsize 24 -fill black -weight bolder -gravity southeast -annotate +20+20 @"t.txt" src.jpg 
说明:上述第一、二种方法都有瑕疵,第二种背景不能变成透明,第一种虽然生成的图片可以透明,但是合成到原始图上效果不是很理想,第三种是完全透明的,所以推进用第三种方式来操作。

相关推荐