当前位置:  编程技术>php

ImageMagick安装及使用教程

    来源: 互联网  发布时间:2014-10-11

    本文导语:  ImageMagick是一套功能强大且免费的图片处理开发包,可以用来读,写和处理多种格式的图片文件。 本节介绍下ImageMagick的安装与使用方法。 1、imagemagick安装 以linux下源码安装为例,首先到ImageMagick官方网站上下载最新的ImageMagick...

ImageMagick是一套功能强大且免费的图片处理开发包,可以用来读,写和处理多种格式的图片文件。

本节介绍下ImageMagick的安装与使用方法。

1、imagemagick安装

以linux下源码安装为例,首先到ImageMagick官方网站上下载最新的ImageMagick源码包,当前最新版本的源码包为ImageMagick-6.7.9-3.tar.gz,下载完毕后,开始进行安装。

首先,进入文件下载目录,解压源码包:
 

代码示例:
cd ./Downloads 
tar xzvf ImageMagick-6.7.9-3.tar.gz 

文件解压完后,进入解压目录:
 

代码示例:
cd ImageMagick-6.7.9-3/ 

下面开始ImageMagick安装三部曲:
 

代码示例:
./configure  
 

在这个过程中,它会对系统的编译链接环境以及ImageMagick所依赖的第三方库进行检查。

注意,ImageMagick在处理图片时需要依赖jpeg、png等第三方图片库,如果程序需要处理这些格式的图片,需要确保这些库已经正确的安装,./configure结束后会输出一个检查报告,如下图:


图中显示,在当前系统中没有安装jpeg第三方库,由于业务需要处理jpeg格式的图片,因此在安装ImageMagick之前,需要先安装好jpeg第三方库。
http://www.ijg.org/下载最新的源码包jpegsrc.v8d.tar.gz,安装过程和ImageMagick基本上一样。

安装完jpeg库后,就可以继续安装ImageMagick了。

编译源码与安装:
 

代码示例:
make 
sudo make install 
 

默认的ImageMagick会被安装到/usr/local路径下,安装成功后就可以在命令行模式下使用ImageMagick了。

2、命令行模式
ImageMagick最方便的地方就是可以在命令行模式下运行,结合shell脚本,我们可以进行非常复杂的图片操作,下面举几个简单的例子进行抛砖引玉。

(1) 图片格式转换:比如把目录下所有的jpeg格式的图片转化为png的,就可以如下进行操作:
 

代码示例:
for pic in *.jpg 
do 
convert ${pic} `basename ${pic} .jpg`.png 
done 
 

(2) 压缩图片大小:一般来说,在web应用中,如果图片很多或者很大,就需要考虑对图片大小进行适当的压缩,常用的压缩办法有:减小图片尺寸(图片缩放),调节压缩比或者去除图片中的多余信息。这些操作使用ImageMagick就可以轻易的完成:
 

代码示例:
convert -resize 100x100 src.jpg des.jpg 
 

把src.jpg的图片大小调整为100x100,convert命令在调整图片高度和宽度的过程中会进行等比压缩,也就是说图片des.jpg的高宽比将会和src.jpg一致。
 

代码示例:
convert -quality 75% src.jpg des.jpg 
 

压缩比越低,图片的大小越小,一般来说75%是最佳的压缩比,在这种情况下肉眼是很难看出图片的失真。
 

代码示例:
convert -strip src.jpg dest.jpg 
 

数码相机在拍照的时候会在生成的图片中留下一些额外的信息,这些信息往往是没用的,可以使用convert –strip命令去除。

以上三种操作可以合在一起进行:
 

代码示例:
convert -resize 100x100 –strip -quality 75% src.jpg dest.jpg 
 

ImageMagick功能十分强大,上面只是抛砖引玉,有兴趣的同学可以去挖掘其更多的功能和用法。

3、编程接口模式

除了命令行模式外,ImageMagick还提供了各种语言的编程接口,包括有c、c++、java、php和perl等等,下面以c++接口为例展示其使用方法。
ImageMagick的c++接口名称为Magick++,Magick++中有以下几个重要的对象:
Image:图片对象,Magick++中最重要的对象;
Geometry:Geometry包含了图片长度,宽度,偏移等信息;
Pixels:图片的像素对象
Color:图片的颜色对象

Blob:二进制数据大对象容器
 

代码示例:
#include   
#include   
using namespace std;  
using namespace Magick;  
int main(int argc, char **argv)  
{  
  InitializeMagick(*argv); 
 
  Image image; 
  try {  
    // 读入一个图片文件,把它存放在image对象中 
    image.read( "src.jpg" ); 
 
    // 把图片缩放到100x100的大小 
    image.resize( Geometry(100,100) ); 
 
    // 把缩放后的图片存放到文件 
    image.write( "dest.jpg" );  
  }  
  catch( Exception &error_ )  
    {  
      cout

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3