史上超强图像处理开源工具包–ImageMagick

  • Post author:
  • Post category:其他



史上超强图像处理开源工具包–ImageMagick



langiner@gmail.com

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 Structure

CxImage类库是一个优秀的图像操作类库。它可以快捷地存取、显示、转换各种图像。有的读者可能说,有那么多优秀的图形库,如OpenIL,FreeImage,PaintLib等等,它们可谓是功能强大,齐全,没必要用其它的类库。但我要说,这些类库基本上没有免费的,使用这些类库,你要被这样那样的许可协议所束缚。在这点上,CxImage类库是完全免费的。另外,在使用上述类库时,你会遇到重重麻烦。因为它们大部分是平台无关的,且用C语言写成,有的还夹杂着基本的C++ wrapper和成堆德编译选项的声明需要你去处理。而CxImage类库在这方面做得很好。还有让我最看好的,就是作者完全公开了源代码。相对于那些封装好的图形库和GDI+来说,这一点使我们可以进一步学习各种编解码技术,而不再浮于各种技术的表面。