你好,游客 登录 注册 搜索
背景:
阅读新闻

史上超强图像处理开源工具包--ImageMagick - Augusdi的专栏

[日期:2013-03-16] 来源:  作者: [字体: ]

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+来说,这一点使我们可以进一步学习各种编解码技术,而不再浮于各种技术的表面。





收藏 推荐 打印 | 录入:admin | 阅读:
相关新闻