ImageMagick
ImageMagick是一个用于查看、编辑位图文件以及进行图像格式转换的开放源代码软件套装。它可以读取、编辑超过100种图象格式。ImageMagick以ImageMagick许可证(一个类似BSD的许可证)发布。ImageMagick (TM) 是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。它遵守GPL许可协议。它可以运行于大多数的操作系统。ImageMagick的大多数功能的使用都来源于命令行工具。通常来说,它可以支持以下程序语言: Perl, C, C++, Python, PHP, Ruby, Java;现成的ImageMagick接口(PerlMagick, Magick++, PythonMagick, MagickWand for PHP, RubyMagick, and JMagick)是可利用的。这使得自动的动态的修改创建图片变为可能。ImageMagick支持至少90种图片格式。
目录 |
1 功能及特点
ImageMagick主要由大量的命令行程序组成,而不提供像Adobe Photoshop、GIMP这样的图形界面。但是,ImageMagick也提供了一个基于X Window的简易GUI:IMDisplay。它还为很多程序语言提供了API库。Imagemagick使用特征签名识别文件类型。
很多程序使用ImageMagick创建缩略图,如MediaWiki、phpBB和vBulletin,还有其它一些程序如LyX使用ImageMagick转换图片格式。
在perl语言中,ImageMagick还有一个API叫PerlMagick。
- 格式转换:从一种格式转换成图像到另一个(例如 PNG 转 JPEG)
- 变换:缩放,旋转,裁剪,翻转或修剪图像
- 透明度:使图像的部分变为透明
- 附加:添加形状或一帧到图像
- 装饰:添加边框或帧图像
- 特效:模糊,锐化,阈值,或色彩图像动画:创建一个从GIF动画图像组序列
- 文本及评论:插入描述或艺术图像中的文字
- 图像识别:描述的格式和图像性能
- 综合:重叠了一个又一个的图像
- 蒙太奇:并列图像画布上的图像缩略图
- 电影支持:读写图像的共同使用的数字电影工作方式
- 图像计算器:应用数学表达式的图像或图像通道
- 离散傅立叶变换:实现正向和反向的DFT。
- 高动态范围图像:准确地表现了从最明亮的阳光直射到最深最黑暗的阴影找到真正的幕后广泛的强度水平
- 加密或解密图片:转换成不懂乱码,然后再返回普通图像
- 虚拟像素支持:方便以外区域的图像像素
- 大图像支持:读,过程,或写mebi和吉比像素的图像尺寸
- 执行:ImageMagick的是线程安全的,利用内部算法OpenMP的功能及快速的双核和四核处理器技术提供窗口优势
- 异构分布式处理:某些算法可以在跨越的CPU,GPU,以及其他处理器组成的异构平台音乐会执行速度提高。
2 文件格式转换
ImageMagick最基本的一个功能是准确高效地转换图片的格式。请参考ImageMagick支持的格式列表
3 ImageMagick命令行工具
ImageMagick 包括一组命令行工具来操作图片。你大部份习惯每次编辑图片都提供图形用户接口 (GUI) 编辑图像就像GIMP和PhotoShop一样。 然而,一个图形用户接口不总是方便的。 假如你想要从一个网页动态地处理一个图像,或者你在不同时间生成一样的或不同的图像,想要对许多图像或重复特定应用相同的操作。 对于操作的这些类型,处理公用程序命令行工具是一个好的选择。
3.1 convert
转换图像格式和大小,模糊,裁剪,驱除污点,抖动,临近,图片上画图片,加入新图片,生成缩略图等。
3.2 identify
描述一个或较多图像文件的格式和特性。
3.3 mogrify
按规定尺寸制作一个图像,模糊,裁剪,抖动等。Mogrify改写最初的图像文件然后写到一个不同的图像文件。
3.4 composite
根据一个图片或多个图片组合生成图片。
3.5 montage
montage 用来创建一组缩略图的阵列,就像将很多图像拼接成一个表一样的东西,主要用于图像的拼接。
montage 命令可以用来产生缩略图,例如:
montage *.png montage.png会产生:

这样产生的边距太大了,可以用 -geometry 参数来控制:
montage *.png -geometry +1+1 montage.png
产生的效果为:

-geometry 使用这样的语法: widthxheight{+-}x{+-}y ,可以设定大小和位置。 默认 montage 会选择合适的行数和列数来产生缩略图,不过你可以用 -tile 参数来手工控制:
montage *.png -geometry +1+1 -tile 4x1 montage.png
产生一行的效果:

如果这儿图形的个数不确定,也可以简略地写成 -tile x1 。还有其他参数,比 如,可以通过 -shadow 来产生阴影、通过 -frame 来产生边框。也可以为图像加 上标签,通常加上标签之后要改变一下大小好让标签能够放得下,在 -geometry 参数后面加的那个 `>' 表示设置 -geometry 的同时并不同时放大原来的图像:
montage -label '%f' *.png -tile x1 -frame 5 \ -geometry '60x60+4+4>' montage.png
其中 `%f' 表示文件名,还有其他格式化字符,如 `%w' 表示宽度、`%h' 表示 高度等。你也可以用 -set 来达到同样的目的:
montage *.png -tile x1 -frame 5 -geometry '90x48+4+4>' -pointsize 10 -set label '%f\n%2x%h' montage.png
你也可以分别为每个图片指定标签,如果使用 -set 来指定,则必须要用括号扩 上:
montage -label Emacs Emacs.png \ -label eMacs eMacs.png \ \( emAcs.png -set label emAcs \) \ \( emaCs.png -set label emaCs \) \ -tile x1 -geometry '60x60+2+2>' \ -title 'Emacs Icons' montage.png
如图:

你可以通过 -label 或者 +label ( -set 选项也是类似的)来关掉图片的标签 显示,但是两者又有一些不同的地方,例如,png 格式的图片通常可以把标签存 储在图片文件里面:
convert -label 'Emacs' Emacs.png Emacs.png convert -label 'eMacs' eMacs.png eMacs.png
默认 montage 会读取图片中的标签并把它显示出来,这和使用 `%l' 参数是一 样的,这个时候 -label 和 +label 的区别就显示出来了:
montage -label '' Emacs.png \ +label eMacs.png \ -tile x1 -geometry '60x48+2+2>' montage.png

可以看到 +label 是把标签设定成从文件读取的默认情况,而 -label 则明 确地关掉了所有标签显示。
3.6 compare
在算术上和视觉上评估不同的图片及其它的改造图片。
3.7 display
如果你拥有一个X server的系统,它可以按次序的显示图片
3.8 animate
利用X server显示动画图片
3.9 import
在X server或任何可见的窗口上输出图片文件。 你可以捕获单一窗口,整个的荧屏或任何荧屏的矩形部分。
3.10 conjure
解释执行 MSL (Magick Scripting Language) 写的脚本。
4 参见
- ImageMagick使用简介. 阿炯. 2010-03-29.
- 使用 montage 来产生缩略图. 星黎殿.