博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ImageMagick的安装及使用
阅读量:4709 次
发布时间:2019-06-10

本文共 2625 字,大约阅读时间需要 8 分钟。

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

1、安装

以linux下源代码安装为例,首先到上下载最新的ImageMagick源代码包,当前最新版本号的源代码包为ImageMagick-6.7.9-3.tar.gz,完成下载后,開始进行安装。

首先进入文件下载文件夹,解压源代码包:

cd ./Downloadstar 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了。

接下来就是编译源代码以及安装了:

makesudo make install

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

2、命令行模式

ImageMagick最方便的地方就是能够在命令行模式下执行,结合shell脚本,我们能够进行很复杂的图片操作,以下举几个简单的样例进行抛砖引玉。

(1) 图片格式转换:比方把文件夹下全部的jpeg格式的图片转化为png的,就能够例如以下进行操作:

for pic in *.jpgdoconvert ${pic} `basename ${pic} .jpg`.pngdone

(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 << "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++的都懂得,这里就不多说了

转载于:https://www.cnblogs.com/zfyouxi/p/4244719.html

你可能感兴趣的文章
Codeforces Round #316 (Div. 2)C. Replacement(模拟)
查看>>
Python入门学习笔记17(sqlalchemyd的使用)
查看>>
.NET CORE TOKEN 权限验证
查看>>
.Net Core 中间件之主机地址过滤(HostFiltering)源码解析
查看>>
Lucene.Net 2.3.1开发介绍 —— 一、接触Lucene.Net
查看>>
java PDF分页打印
查看>>
数链剖分小结
查看>>
应用nslookup命令查看A记录、MX记录、CNAME记录和NS记录
查看>>
APT攻击
查看>>
做衡八的日子(转自VFleaking)
查看>>
day7.条件和循环
查看>>
(转)log4j(二)——如何控制日志信息的输出?
查看>>
JavaScript简介
查看>>
php.ini中safe_mode开启对PHP系统函数的影响
查看>>
gdb
查看>>
ubuntu清理旧内核
查看>>
Node之安装篇
查看>>
Android的Animation之LayoutAnimation使用方法
查看>>
二分图最大匹配算法-Hopcroft-Karp模板
查看>>
发布和订阅的删除
查看>>