近期在使用ImageMagick处理酒店团购图片,写篇博客小小的总结下它的安装及使用方法。ImageMagick是一套功能强大且免费的图片处理开发包,能够用来读,写和处理多种格式的图片文件,总之非常强大就是了,废话不多说了,立即来看看它的安装及使用方法。

1、安装

以linux下源代码安装为例,首先到点击打开链接上下载最新的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/

接下来就是安装三部曲了:

./configure 

在这个过程中,它会对系统的编译链接环境以及ImageMagick所依赖的第三方库进行检查,特别须要注意的是,ImageMagick在处理图片时须要依赖jpeg、png等第三方图片库,假设你的程序须要处理这些格式的图片,须要确保这些库已经正确的安装,./configure结束后会输出一个检查报告,例如以下图:

图中显示,在当前系统中没有安装jpeg第三方库,因为业务须要处理jpeg格式的图片,因此在安装ImageMagick之前,须要先安装好jpeg第三方库。到 点击打开链接上下载最新的源代码包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 <Magick++.h>
#include <iostream>
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 << "Caught exception: " << error_.what() << endl;
return 1;
}
return 0;
}

从上面的样例能够看出Magick++的使用很的简单,只须要包括Magick++.h一个头文件就能够了, 它的全部api及对象都放在Magick的命名空间内,唯一须要注意的是Magick++在错误发生的时候会抛出异常,所以一定要使用try catch块捕获住异常,这点千万要记住。更具体的api文档能够參考以下的网址,使用文档介绍的很具体,并且有各种样例,相信不会很难看懂:点击打开链接

另外编译的时候要-I/usr/local/include/ImageMagick ,-L/usr/local/lib,-lMagickCore -lm -lgomp -lpthread,学c++的都懂得,这里就不多说了

ImageMagick的安装及使用的更多相关文章

  1. 转:ImageMagick +Jmagick安装

    原文来自于: 目录 一.ImageMagick介绍 二.安装支持库 三.在Linux上用源码编译安装ImageMagick与Jmagick 四.在Linux上使用yum安装ImageMagick与Jm ...

  2. ImageMagick jmagick 安装

    在安装ImageMagick之前,请检查下面包已经安装 tiff-3.9.5.tar.gz         (rpm -qa|grep libtiff检查是否已经安装) libpng-1.2.46.t ...

  3. 图片处理服务 ImageMagick 的安装和使用

    简介 该文章使用目前官方最新版本7.0.8,这里只记录下Windows系统下的安装. 官方网站:http://www.imagemagick.org/script/index.php. ImageMa ...

  4. php imagemagick库安装使用

    imagemagick介绍: ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. ...

  5. ImageMagick 的安装及使用

    一.什么是Imagemagick? ImageMagick是一款免费开源的图片编辑软件.既可以通过命令行使用,也可以通过C/C++.Perl.Java.PHP.Python或Ruby调用库编程来完成. ...

  6. linux安装imagemagick,centos安装imagemagick方法

    1.安装文件格式支持库 yum install tcl-devel libpng-devel libjpeg-devel ghostscript-devel bzip2-devel freetype- ...

  7. Centos5.8 安装 ImageMagick 6.8.9-3

    下载最新的ImageMagick源码包 ImageMagick-6.8.9-3.x86_64.rpm 直接prm -ivh 安装提示错误 error: Failed dependencies: lib ...

  8. Mac下ImageMagick安装(libpng)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/42562705 ...

  9. php安装imagemagick扩展 常见问题与解决方案(win平台)

    1.写在前面 1-1.ImageMagick介绍 ImageMagick是一套功能强大.稳定而且开源的工具集和开发包,可以用来读.写和处理超过89种基本格式的图片文件,包括流行的TIFF.JPEG.G ...

随机推荐

  1. truncate 和 delete 差异

    truncate table players; 相当于 delete from players;要么 delete players from players;  要么 delete players.* ...

  2. MSSQL、C# 、Winform、ASP.NET - 数据库备份与还原模块

    数据库备份还原类: using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  3. 新发现的Cyberduck(映射网盘)和zsuncloud(硬件产品很新潮),群辉nas的确好用(购买链接)

    https://cyberduck.io/?l=en http://www.zsuncloud.com/ 群辉nas的确好用啊在哪里可以买到?官网 淘宝也可以自己做黑群晖 先用xpenoboot is ...

  4. Qt递归拷贝和删除目录

    最近在翻看项目代码时,看到了这两个函数,想到这个功能十分常用,因此拿出来与大家分享,希望对大家有用.几点说明: 1.记得当初写代码那会,是参考了网上的帖子写的,做了一点小修改.因此代码源于网络. 2. ...

  5. javascript 回调函数应用

    回调函数是什么在学习之前还真不知道js回调函数怎么使用及作用了,下面本文章把我在学习回调函数例子给各位同学介绍一下吧,有需了解的同学不防进入参考. 回调函数原理: 我现在出发,到了通知你”这是一个异步 ...

  6. Libgdx实现异步加载网络图片并保存到SD卡或者data/data目录下边

    Libgdx实现异步加载网络图片并保存到SD卡或者data/data目录下边,当本地有图片的时候,直接从本地读取图片,如果本地没有图片,将从服务器异步加载图片 package com.example. ...

  7. UIGestureRecognizer在多层视图中的触发问题

    在一个superview中,添加了一个subview.tap一下superview,将subview隐藏起来. 在视图superview添加一个UITapGestureRecognizer对象,在UI ...

  8. 一种根据URL参数条件动态生成URL的方法

    最近做了一个产品列表页类似于搜索列表页, 功能比较简单,比搜索页复杂的逻辑在于,生成各个查询条件的URL.我们的链接如下: http://xxx.xxx.xxx/product/list.html?s ...

  9. BSGS_Baby steps giant steps算法

    BSGS这个主要是用来解决这个题: A^x=B(mod C)(C是质数),都是整数,已知A.B.C求x. 在具体的题目中,C一般是所有可能事件的总数. 解: 设m = ceil(sqrt(C))(ce ...

  10. DataGridView ——管理员对用户的那点操作

    记得第一次做机房收费系统的时候,就在加入删除用户这出现了点小问题,由于一直都是一个容不得一点瑕疵的人.所以对查询用户的时候查询一次就会多一些空行我非常是不能容忍.看似非常小的问题,我却花了非常长的时间 ...