java 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 << "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安装及使用教程相关推荐
- Java数据库连接——JDBC新手安装、测试教程
文章目录 前言 一.JDBC是什么? 二.数据库配置 1.软件安装 2.Navicat创建设置 三.编写Java代码 1.前期文件配置 2.编写代码 四.测试 总结 前言 本文适用于JDBC了解与初学 ...
- Java服务器接口快速开发之Servlet详细教程
今日科技快讯 7月14日晚间消息,据乐视网刚刚披露的业绩预告,公司预计2017年上半年亏损6.37亿至6.42亿元,上年同期盈利2.84亿元.报告期内,乐视网资产减值损失计提规模较大约为2.3亿元,其 ...
- Linux安装RabbitMQ详细教程Java使用
目录 一:环境准备 1.RabbitMQ版本 和 Erlang 版本兼容性关系 2.官方安装包下载地址 3.百度云盘下载 提取码:8956 4.安装包中说明,请下载对应的安装包 二.安装操作步骤 1. ...
- Java 13 的下载安装教程
Java 13 的下载安装教程 说明: 本文介绍的是 Windows 下安装 Java 的方法.对于 Linux 下 Java 的安装,可见笔者的另一篇博客: 在 Linux 操作系统中安装 Java ...
- ictclas包 java_ICTCLAS分词系统Java调用接口在Eclipse中的安装
ICTCLAS分词系统Java调用接口在Eclipse中的安装 实验环境:JDK1.5.Eclipse3.1.XP操作系统 分词系统Java接口解压包:d:\fenci(http://www.nlp. ...
- java安装jre_Java Runtime Environment怎么安装 JRE安装详细图文教程
Java Runtime Environment是运行java程序所必需的最小安装包,是java的核心运行环境.那么我们要怎么安装Java Runtime Environment,今天小编就为大家提供 ...
- java程序员第一天入职_Java程序员入职第一天环境安装资源及教程汇总
Jdk软件包 官网链接:https://www.oracle.com/technetwork/java/javase/downloads/index.html 百度云链接:https://pan.ba ...
- java jre怎么安装_Java Runtime Environment怎么安装 JRE安装详细图文教程
Java Runtime Environment是运行java程序所必需的最小安装包,是java的核心运行环境.那么我们要怎么安装Java Runtime Environment,今天小编就为大家提供 ...
- Java详细安装教程--Java(jdk)安装
Java详细安装教程–Java(jdk)安装 一.java历史简介 1991 年Sun公司的James Gosling等人开始开发名称为 Oak (橡树)的语言.希望用于控制嵌入在有线电视交换盒.PD ...
最新文章
- Mysql用navicat操作导出查询结果
- hdu 5585 判断一个数能否被3整除
- 计算机的硬件发展趋势为,高性能计算机的发展趋势
- Mybatis配置文件参数定义
- sklearn学习之KNN
- 二叉树的迭代遍历(JavaScript)
- Spring 加载Bean流程
- 全网首发:WINDOWS某些文件夹,提供管理员权限后也无法删除,正确解决办法
- Autodesk 3dsMax 2019安装注册教程
- Spring和SpringBoot学习
- 网页与服务器数据库数据交互,网页与ACCESS数据库如何实现数据交互?
- 淘宝店铺老店标识怎么显示 怎么淘宝老店标识申请
- Mathematical notation
- Perl笔记:07、以正则表达式进行匹…
- 力扣LeetCode刷题笔记总结1
- vcode去除分号和双引号方法
- 经典算法研究系列:五、红黑树算法的实现与剖析
- 搞 AI 建模预测都在用 Python,其实入门用 SPL 也不错
- 【C语言小游戏】猜数字游戏
- 教你用Python如何玩转声音文件,将声音按照语音间隙切割为片段
热门文章
- bzoj3238 [Ahoi2013]差异 后缀自动机
- python基础练习题(按条件对指定序列求和,打印99乘法表、求斐波那契数列、百马百担、求水仙花数、求n以内的所有质数(素数)和)、集合的讲解、一些公关方法
- 【操作系统】 第二章 进程的描述与控制
- python初始化函数_当你学会了Python爬虫,网上的图片素材就开始免费了
- 程序员的自我修养——读《软技能-代码之外的生存指南》笔记
- 网站备案负责人_三分钟教你如何做好网站备案
- python三种基本数据类型_Python的三种基本数据类型
- requests爬取免费代理2
- 使用UMDH查找内存泄漏
- Nicholas谈UE4对手游平台的优化和支持