史上超强图像处理开源工具包–ImageMagick
ImageMagick简要介绍
ImageMagick是一套功能强大、稳定而且免费的工具集和开发包。
可以用来读、写和图像格式转换,可以处理超过100种图像格式,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。
对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。
运行平台
ImageMagick几乎可以在任何非专有的操作系统上编译,无论是32位还是64位的CPU,包括*nix ,Windows ’95/’98/ME/NT 4.0/2000/XP, Macintosh (MacOS 9 /10), VMS 和 OS/2.
使用协议
ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。它遵守GPL许可协议。它可以运行于大多数的操作系统。
支持语言
Perl, C, C++, Python, PHP, Ruby, Java;现成的ImageMagick接口有以下几种(PerlMagick, Magick++, PythonMagick, imagick for PHP, 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
由于上述这些特性,让它成为WEB图片处理的首选。
主要功能
1. 将图片从一个格式转换到另一个格式。
2. 改变尺寸、旋转、锐化、减色、图片特效
3. 缩略图片的合成图
4. 适于web的背景透明的图片
5. 将一组图片做成gif动画
6. 将几张图片做成一张组合图片
7. 在一个图片上写字或画图形,带文字阴影和边框渲染
8. 给图片加边框或框架
9. 取得一些图片的特性信息
10 给图片添加水印信息
安装测试
1) 下载最新的ImageMagick压缩包
在官网
http://www.imagemagick.org/
上可以下载各种版本的软件包
2)配置编译并安装
第一步:解开包文件
tar zxvf ImageMagick-5.5.6.tar.gz
第二步:运行配置文件,生成Makefile文件
./configure –prefix==$targetDir
默认生成的静态库和动态库放置在/usr/local/lib,在C/C++工程中需要用到的头文件放置在/usr/local/Include,你也可以通过指定$targetDir来将这些文件放置到其他目录中
第三步:编译
make
第四步:安装到指定的目录
make install
3)各种图像格式的支持
ImageMagick自身仅仅支持有限几种格式的图像,具体支持哪些格式图像,可以在第二步的配置结果可以看出(见下表),如果你要处理的某种格式图像在本配置结果列表中没有(–with-xxx=no),就需要下载该格式图像支持软件包
Delegate Configuration:
BZLIB –with-bzlib=yes yes
Autotrace –with-autotrace=no no
Dejavu fonts –with-dejavu-font-dir=default none
DJVU –with-djvu=yes no
DPS –with-dps=yes no
FFTW –with-fftw=yes no
FlashPIX –with-fpx=yes no
FontConfig –with-fontconfig=no no
FreeType –with-freetype=yes no
GhostPCL None pcl6 (unknown)
GhostXPS None gxps (unknown)
Ghostscript None gs (unknown)
Ghostscript fonts –with-gs-font-dir=default /usr/share/fonts/default/Type1/
Ghostscript lib –with-gslib=no no
Graphviz –with-gvc=yes no
JBIG –with-jbig=yes no
JPEG v1 –with-jpeg=yes yes
JPEG-2000 –with-jp2=yes no
LCMS v1 –with-lcms=yes no
LCMS v2 –with-lcms2=yes no
LQR –with-lqr=yes no
Magick++ –with-magick-plus-plus=yes yes
OpenEXR –with-openexr=yes no
PERL –with-perl=no no
PNG –with-png=yes no
RSVG –with-rsvg=no no
TIFF –with-tiff=yes no
Windows fonts –with-windows-font-dir= none
WMF –with-wmf=yes no
X11 –with-x= no
XML –with-xml=no no
ZLIB –with-zlib=yes yes
通常可以免费下载的软件包包括PNG、JPEG、TIFF等
PNG包下载地点:
http://sourceforge.net/projects/libpng/
JPEG包下载地点:
http://freshmeat.net/redir/libjpeg/5665/url_tgz/jpegsrc.v6b.tar.gz
TIFF包下载地点:
http://www.randycullom.com/ImageMagick/tiff-v3.5.5.tar.gz
注意:
1)如果需要支持这些格式图像,需要先安装这些软件包,再安装ImageMagick,在安装完成后,可以通过/usr/local/bin/convert -list format来看实际支持的文件格式。
2)将ImageMagick安装后的函数库所在目录加入到/etc/profile文件中的LD_LIBRARY_PATH环境变量中,以及/etc/ld.so.conf中同时运行ldconfig,否则一些对ImageMagic的应用可能会出问题。
4)功能测试
安装好以后,可以通过运行测试程序来检验安装是否正确,默认情况下,ImageMagick的可执行程序安装在/usr/local/bin目录下,可以通过运行相应的命令在检查上述功能,具体使用实例可以参见
http://www.charry.org/docs/linux/ImageMagick/ImageMagick.html
附录:其他一些图像处理软件包
GIMP(
http://www.gimp.org/
)是一个基于GNU通用许可的图像处理软件, 它比较适合用于照片修饰, 图像合成和图像创作. 它可以正常工作于各大操作系统平台,并且有多个国家语言版本。
详细安装和使用体验可以参考 强大的开源图像处理软件——GIMP(
http://ukyoi-d.spaces.live.com/blog/cns!D40A6A1CE1A272AC!311.entry
)
Paint.NET(
http://www.getpaint.net/
) 是一个运行在Windows操作系统上面的图像和相片处理软件。它包含许多特性,包括具有直观的用户界面,并支持层,无限次的撤销,特效,以及各种各样的强大实用的插件。Paint.NET的体积很小,下载包才有2M多,但它的功能几乎强大到可比photoshop,只是要运行Paint.NET需要在电脑里面安装有NET.Framwork。
Blender(
http://www.blender.org/
)是一个稳定的3D模型创作软件,可用于所有主要的操作系统,基于GPL许可。你可以利用它创建模型,阴影,动画等交互式3D效果。
Crystal Space(
http://www.crystalspace3d.org
) 是一个免费的跨平台软件开发工具包,主要用来开发创建实时的3D图形和一些特别的游戏。主要支持Linux ,Mac OS X和Windows 。
Art of Illusion (
http://www.artofillusion.org/
)是一个免费开源的3D模型渲染软件. 它使用Java语言编写, 可以运行在任何Java虚拟机上面。
OpenFX (
http://www.openfx.org/
)是一个开放源码的三维建模,动画和渲染套件,由Stuart Ferguson博士创建。其强大的功能集包括一个完整的渲染和raytrace引擎, 在NURBS的支持下,采用基于运动学的动画,变形,以及广泛的插件API。
Java Image Filters是由 Jhlabs 开发的一组用来处理 Java 图像的类库,提供各种常用的图像处理效果,例如反转色、扭曲、水波纹、凹凸、黑白效果等等数十种效果
The CImg Library是一个强大的图像处理类库。在代码中使用此类可以导入/导出,处理,和显示图片,它是一个强大的处理图像的C++工具箱。
FreeImage是一个自由、开源的图形库–FreeImage (支持位图构件―例 如调色板和数据位―的便易访问;将位图从一种位深度转换到另一种位深度;当有多幅位图页―例如TIFF―时访问位图的不同页;基本的位图处理,如旋转、翻 转(flipping)和重采样,或点操作,如亮度和对比度调整;Alpha混合与合成(Compositing and blending);FreeImage不支持:高级图象处理操作,如回卷(Convolution)和变换(Transform);位图绘制; 矢量图形。)
CxImage(
http://www.codeproject.com/KB/graphics/cximage.aspx
)
CxImage类库是一个优秀的图像操作类库。它可以快捷地存取、显示、转换各种图像。有的读者可能说,有那么多优秀的图形库,如OpenIL,FreeImage,PaintLib等等,它们可谓是功能强大,齐全,没必要用其它的类库。但我要说,这些类库基本上没有免费的,使用这些类库,你要被这样那样的许可协议所束缚。在这点上,CxImage类库是完全免费的。另外,在使用上述类库时,你会遇到重重麻烦。因为它们大部分是平台无关的,且用C语言写成,有的还夹杂着基本的C++ wrapper和成堆德编译选项的声明需要你去处理。而CxImage类库在这方面做得很好。还有让我最看好的,就是作者完全公开了源代码。相对于那些封装好的图形库和GDI+来说,这一点使我们可以进一步学习各种编解码技术,而不再浮于各种技术的表面。