ImageMagick
ImageMagick安装教程
ImageMagick (TM) 是一个免费的创建、编辑、合成图片的软件。ImageMagick是一个旨在读,写和操纵许多流行的图像格式的工具,包括GIF, JPEG, PNG, PDF,图像和Photo CD。使用ImageMagick,你可以创建动态的GIF,使这个软件制作适合于Web应用程序的图片。
您还可以调整大小,旋转,锐化,减少颜色,或添加特殊效果,图像和保存完成的工作在相同或不同的图像格式。
它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。
ImageMagick命令
尽管大多数网页中的例子都是用"convert"命令来处理图像,还有很多其它的ImageMagick命令,我将在下文中简单介绍。
其中的某些命令不能在网页中正常的演示,我会给你这些命令的要点和技巧,尽管不能在这里显示其生成的效果。convert——转换和修改图像
"convert"命令是ImageMagick的主要命令,几乎网页中所有的例子都使用这个命令。因此,我不在这里详述这个命令,而是介绍下这个命令的历史。
这个命令起源于IM初创期,用来转换图片格式,如今还是这个功能,这也就是被称为转换的原因。
这个命令可能都不读取内存中的图像,而是使用IM之外的辅助Delegate程序直接转换。这种完全外在的形式已经随着时间的推移淡出使用,也较少被需要,除了作为读取和写出复杂的图像文件格式的方式。
在一段时间内,该命令被添加了一些额外的图像处理功能,使这个命令在转换不同甚至是相同的图像格式时,产生了轻微的变化。这些一般是简单的选项,但是在IM的版本5中,这些图像处理功能被扩展了,成为了"convert"命令比进行图像转换更为重要的功能。
因为有各种各样的选项,各种各样的选项在运行的时候,会因为运行顺序的不同而产生各种奇怪而不可控的结果。当多个图像处理选项被使用时,IM因不稳定且不可控而开始失宠。
IM版本6见证了图像处理方式从'options'方式转变为'do it as you see it'方式,图像处理功能变得稳定且可预测,IM的命令行变得有用了多个数量级。
源于此,"convert"再也不是仅仅转换图片格式,而成为了访问图像处理功能的命令行API,如以非常复杂的方式创建和修改图像,而不需要图像处理的学位,或者以计算机语言(如Perl, PHP, 或 C)编程。当然,一些shell脚本的知识是有用的,但也不是严格要求。
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的命令行处理介绍
命令行样式改变的原因(或者叫IM以前的版本存在的问题)。
在ImageMagick以前的版本(版本5.5.7及更早的版本)中,命令行界面连接IM的程序库倾向于使用命令参数呈现的顺序。但这是非常随机的,也让所有试图弄清软件究竟是如何运行的人感到困惑。另外,运行成功的命令可能在下一次不能运行,但作为IM的创始人,始终不懈地改进接口,以让它像人们所期望的那样工作。
问题的根源在于ImageMagick所遵循的是相当标准的UNIX命令行处理格式
command [options] input_image output_image
随着时间的推移这也开始产生问题,因为图像处理是会进行大量操作,且对其执行的操作往往涉及多个图像的复杂对象。基于这个原因,命令行处理样式也开始改变。
command [options] image1 [options] image2 [options] output_image
这个能够在新版的软件中运行,并且是版本5.5.7中所使用的基本样式。
各种各样的图像操作参数如“-negate”、“-resize”和“-crop”等,会在图像导入之前或者之后使用。
例如,在版本5.5.7中,以下两条命令都是可行的并且可以达到同样的目的:
convert -negate image.gif output.gif
convert image.gif -negate output.gif
问题是如果进行两个图像处理操作,例如:
convert -size 40x20 xc:red xc:blue \
-append -rotate 90 append_rotate.gif
在版本5.5.7中的结果是:这两个图像首先将被旋转,然后连接到一起,将产生如下的图像。这说明"-rotate"操作将在"-append"之前进行,而这可能并不是使用者所预想的。
而在ImageMagick版本6中,操作将永远按照使用者所给定的命令行顺序运行。这样之前的例子在版本6中,两个图像将首先被连接到一起,然后得到的图像将进行旋转,产生的图像为:
如果使用者想在两个图像连接到一起之前旋转,他可以明确地要求IM版本6按如下顺序操作:
convert -size 40x20 xc:red xc:blue \
-rotate 90 -append append_rotate_bad.gif
这种良好的控制方式超越了IM之前的版本,只是可能额外需要一个管道或者介质保存图像来实现。
要解决这个问题,需要大量的工作并克服兼容性的问题。但另一方面则是解决了在版本5中所应用的简单命令无法如版本6那样符合我们预期的运行。
实质上,命令行的用法在版本6之前的版本中并未界定清楚,在我们的定向思维被打破之前,产生了许多奇怪和意外的结果。