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 << "Caught exception: " << error_.what() << endl;

return 1;

}

return 0;

}

从上面的例子可以看出Magick++的使用非常的简单,仅仅需要包含Magick++.h一个头文件就可以了,它的所有api及对象都放在Magick的命名空间内。

唯一要注意的地方:

Magick++在发生错误的时候会抛出异常,所以一定要使用try catch块捕获住异常,这点千万要记住。

更具体的api文档可以参考http://www.imagemagick.org/Magick++/Documentation.html,使用文档介绍的非常详细,而且有各种例子。

另外,编译时要-I/usr/local/include/ImageMagick ,-L/usr/local/lib,-lMagickCore -lm -lgomp -lpthread,学c++的都懂得,不再赘述。

java imagemagick 接口_ImageMagick安装及使用教程相关推荐

  1. Java数据库连接——JDBC新手安装、测试教程

    文章目录 前言 一.JDBC是什么? 二.数据库配置 1.软件安装 2.Navicat创建设置 三.编写Java代码 1.前期文件配置 2.编写代码 四.测试 总结 前言 本文适用于JDBC了解与初学 ...

  2. Java服务器接口快速开发之Servlet详细教程

    今日科技快讯 7月14日晚间消息,据乐视网刚刚披露的业绩预告,公司预计2017年上半年亏损6.37亿至6.42亿元,上年同期盈利2.84亿元.报告期内,乐视网资产减值损失计提规模较大约为2.3亿元,其 ...

  3. Linux安装RabbitMQ详细教程Java使用

    目录 一:环境准备 1.RabbitMQ版本 和 Erlang 版本兼容性关系 2.官方安装包下载地址 3.百度云盘下载 提取码:8956 4.安装包中说明,请下载对应的安装包 二.安装操作步骤 1. ...

  4. Java 13 的下载安装教程

    Java 13 的下载安装教程 说明: 本文介绍的是 Windows 下安装 Java 的方法.对于 Linux 下 Java 的安装,可见笔者的另一篇博客: 在 Linux 操作系统中安装 Java ...

  5. ictclas包 java_ICTCLAS分词系统Java调用接口在Eclipse中的安装

    ICTCLAS分词系统Java调用接口在Eclipse中的安装 实验环境:JDK1.5.Eclipse3.1.XP操作系统 分词系统Java接口解压包:d:\fenci(http://www.nlp. ...

  6. java安装jre_Java Runtime Environment怎么安装 JRE安装详细图文教程

    Java Runtime Environment是运行java程序所必需的最小安装包,是java的核心运行环境.那么我们要怎么安装Java Runtime Environment,今天小编就为大家提供 ...

  7. java程序员第一天入职_Java程序员入职第一天环境安装资源及教程汇总

    Jdk软件包 官网链接:https://www.oracle.com/technetwork/java/javase/downloads/index.html 百度云链接:https://pan.ba ...

  8. java jre怎么安装_Java Runtime Environment怎么安装 JRE安装详细图文教程

    Java Runtime Environment是运行java程序所必需的最小安装包,是java的核心运行环境.那么我们要怎么安装Java Runtime Environment,今天小编就为大家提供 ...

  9. Java详细安装教程--Java(jdk)安装

    Java详细安装教程–Java(jdk)安装 一.java历史简介 1991 年Sun公司的James Gosling等人开始开发名称为 Oak (橡树)的语言.希望用于控制嵌入在有线电视交换盒.PD ...

最新文章

  1. Mysql用navicat操作导出查询结果
  2. hdu 5585 判断一个数能否被3整除
  3. 计算机的硬件发展趋势为,高性能计算机的发展趋势
  4. Mybatis配置文件参数定义
  5. sklearn学习之KNN
  6. 二叉树的迭代遍历(JavaScript)
  7. Spring 加载Bean流程
  8. 全网首发:WINDOWS某些文件夹,提供管理员权限后也无法删除,正确解决办法
  9. Autodesk 3dsMax 2019安装注册教程
  10. Spring和SpringBoot学习
  11. 网页与服务器数据库数据交互,网页与ACCESS数据库如何实现数据交互?
  12. 淘宝店铺老店标识怎么显示 怎么淘宝老店标识申请
  13. Mathematical notation
  14. Perl笔记:07、以正则表达式进行匹…
  15. 力扣LeetCode刷题笔记总结1
  16. vcode去除分号和双引号方法
  17. 经典算法研究系列:五、红黑树算法的实现与剖析
  18. 搞 AI 建模预测都在用 Python,其实入门用 SPL 也不错
  19. 【C语言小游戏】猜数字游戏
  20. 教你用Python如何玩转声音文件,将声音按照语音间隙切割为片段

热门文章

  1. bzoj3238 [Ahoi2013]差异 后缀自动机
  2. python基础练习题(按条件对指定序列求和,打印99乘法表、求斐波那契数列、百马百担、求水仙花数、求n以内的所有质数(素数)和)、集合的讲解、一些公关方法
  3. 【操作系统】 第二章 进程的描述与控制
  4. python初始化函数_当你学会了Python爬虫,网上的图片素材就开始免费了
  5. 程序员的自我修养——读《软技能-代码之外的生存指南》笔记
  6. 网站备案负责人_三分钟教你如何做好网站备案
  7. python三种基本数据类型_Python的三种基本数据类型
  8. requests爬取免费代理2
  9. 使用UMDH查找内存泄漏
  10. Nicholas谈UE4对手游平台的优化和支持