转:ImageMagick +Jmagick安装
原文来自于:
目录
一、ImageMagick介绍
二、安装支持库
三、在Linux上用源码编译安装ImageMagick与Jmagick
四、在Linux上使用yum安装ImageMagick与Jmagick
五、在windows上安装ImageMagick与Jmagick
六、常见问题以及解决方法
作者:赵磊
博客:http://elf8848.iteye.com
转载请注明出处:http://elf8848.iteye.com/blog/455675
一、ImageMagick介绍
--------------------------------------------------------------------------
ImageMagick是用C语言开发图片处理程序。可以对图片进行改变大小、旋转、锐化、减色或增加特效等操作。对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。ImageMagick 的官网是:http://www.imagemagick.org/script/index.php
由于我们是java项目,直接使用java通过JNI技术调用ImageMagick的C语言接口是不行的。因为ImageMagick开发时没有使用java JNI生成的头文件。可以使用jmagick解决,jmagick是由c语言开发的,开发时使用了java JNI生成的头文件,所以java可以通过JNI技术调用jmagick。jmagick再调用ImageMagick。这们我们处理图片使用的是jmagick暴露的java接口。
JMagick不适合在Web应用中使用,请参看:JMagick的JNI-hazard问题
也可以使用JNA来调用ImageMagick,JNA全称是Java Native Access,JNA是在JNI的基础上完善的,方便的我们开发的。JNA项目主页是https://github.com/twall/jna 。使用JNA来调用ImageMagick就须要直接操作ImageMagick提供的C接口(API)。
二、安装支持库
--------------------------------------------------------------------------
Linux服务器如果没有安装Jpeg v6b、libPng、FreeType库,要在安装imagemagick之前先装好,否则imagemagick没法读取jpeg和png图片,字体文件也读不了.
----freetype-2.4.4.tar.gz 字体引擎,生产高质量的字形影像输出,(例如彩色文本渲染,挖空等等)。
----zlib-1.2.5.tar.gz 是zlib通用压缩库,图形格式png使用zlib中的deflate压缩算法。
----libpng-1.2.44.tar.gz 支持PNG 或 libpng-1.4.3.tar.gz版本也可, 目前最新版本是1.5
----libjpeg 支持JPEG v1格式(jpegsrc.v6b.tar.gz或jpegsrc.v8b.tar.gz)
以下可选:
----jasper-1.900.1.zip 支持JPEG2000(文件扩展名是 .jp2 .j2c)
----tiff-3.8.0.tar.gz 支持tif文件 这个用不到,不要安装了
安装jpeg包:
下载地址:http://www.ijg.org/files/
http://www.ijg.org/files/jpegsrc.v6b.tar.gz
ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/delegates
tar -zvxf jpegsrc.v6b.tar.gz
cd jpeg-6b/
./configure --enable-shared --enable-static ; make ; make install
如果你选择默认安装,可能很顺利,指定路径后,请先创建以下文件夹
错误提示:...... /usr/bin/install -c -m 644 jconfig.h /usr/local/jpeg6/include/jconfig.h
/usr/bin/install: 无法创建一般文件‘/usr/local/jpeg6/include/jconfig.h’: 没有那个文件或目录
make: *** [install-headers] Error 1
# mkdir /usr/local/jpeg6
# mkdir /usr/local/jpeg6/include
# mkdir /usr/local/jpeg6/lib
# make install-lib
# make install
安装zlib包:
下载地址:http://www.zlib.net/
ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/delegates
是zlib通用压缩库,图形格式png使用zlib中的deflate压缩算法
tar -xzvf zlib-1.2.5.tar.gz
cd zlib-1.2.5
./configure
make
make install
安装png包:
下载地址:http://sourceforge.net/projects/libpng/
ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/delegates
http://www.libpng.org/pub/png/pngcode.html
tar -xzvf libpng-1.2.12.tar.gz
cd libpng-1.2.12
cp scripts/makefile.std makefile
make
make install
安装freetype
ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/delegates
./configure
make
make install
安装Tiff包
下载地址:ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/delegates
ftp://ftp.remotesensing.org/libtiff/
安装后才能处理TIFF格式图片
tar -xzvf tiff-3.8.0.tar.gz
cd tiff-3.8.0
./configure
make
make install
我安装完成后,在命令行处理图片,报错:libtiff.so.3: cannot open shared object file: No such file or directory
这个模块也用不到, 就不要安装了.
安装jasper包:
下载地址:http://www.ece.uvic.ca/~mdadams/jasper/
安装后才能处理JPEG2000格式图片(文件扩展名是 .jp2 .j2c)
unzip jasper-1.900.1.zip
cd jasper-1.900.1
CFLAGS=-fPIC ./configure
make CFLAGS=-fPIC
make CFLAGS=-fPIC install
三、在Linux上用源码编译安装ImageMagick与jmagick
--------------------------------------------------------------------------
下载ImageMagick和JMagick
Jmagick在ImageMagick官网首页左侧菜单的Program Interfaces菜单中找到jmagick。进入jmagick的主页。
我们使用6.4版本,下载地下是:http://downloads.jmagick.org/6.4.0/
我们下载:
ImageMagick-6.4.0-0.tar.gz
jmagick-6.4.0-src.tar.gz
文档在:http://downloads.jmagick.org/jmagick-doc/
解压ImageMagick,查看ImageMagick的安装说明文件Install-unix.txt就知道怎么安装ImageMagick了。
解压jmagick,查看jmagick的安装说明文件INSTALL就知道怎么安装jmagick了。
安装ImageMagick
修改文件执行权限:chmod -R 755 文件名
tar zvxf ImageMagick-6.4.0-0.tar.gz
cd ImageMagick-6.4.0-0
./configure --prefix=/opt360/ImageMagick-6.4.0 --with-quantum-depth=8 --enable-share
configure参数说明:
--enable-shared 编译成共享库
--disable-static 不编译成静态库
--disable-openmp 禁用多线程,使用多线程性能并没有提高,但CPU占用达到了100%,所以禁用了。
--with-quantum-depth=8 使用8位色深。我的1200万像素数码相机,照出的图片就是8位色深。
--with-windows-font-dir=目录 ,指明字体文件的目录(后面将人工复制中文字体文件到这个目录)
关于Q8,Q16,Q32的说明:(建议使用8,现在数码相机照的相片,每一种颜色就是8位深,3种颜色就是24位,所以选8)
支持的参数有3种,分别是 8, 16, or 32。默认值是16。
Q8表示: 8-bits per pixel quantum
Q16表示:16-bits per pixel quantum
Q32表示:32-bits per pixel quantum
使用16-bit per pixel quantums在处理图片时比8-bit慢15%至50%,并须要更多的内存。
处理一张1024x768像素的图片8-bit要使用3.6M内存,16-bit要使用7.2M内存。计算方法是: (5 * Quantum Depth * Rows * Columns) / 8
configure 完成后,一定要检查IM支持的图片格式种类,configure 完成后出会输出类似如下图的信息,请仔细检查。(信息不一定和下图一样,请根据实际情况自行分析)

安装命令:
make
make install
--卸载命令:
make uninstall
验证configuration情况:identify -list configure
验证支持的图片格式:identify -list format
安装jmagick
提醒:JMagick不适合在Web应用中使用,请参看:JMagick的JNI-hazard问题
修改文件执行权限:chmod -R 755 文件名
tar zvxf jmagick-6.4.0-src.tar.gz
cd jmagick-6.4.0-src
./configure --prefix=/opt360/jmagick-6.4.0 --with-java-home=/home/jdk/jdk1.6.0_12 -with-magick-home=/opt360/ImageMagick-6.4.0
make all
make install
下面几步测试可以不执行
make simpletest 因没有Junit的jar包报2个错误,不用管。
make test
make javadoc
安装成功后,在/opt360/jmagick-6.4.0/lib/有一个jmagick-6.4.0.jar文件,在你的java项目中就使用这个jar文件处理图片。
记住jmagick-6.4.0.jar是使用前面你指定的jdk1.6编译出来的,所以不能在jdk为1.5的环境下使用jmagick-6.4.0.jar。
如果你执行了make javadoc,在/opt360/jmagick-6.4.0/share/doc目录下就有文档。
四、在Linux上使用yum安装ImageMagick
--------------------------------------------------------------------------
安装就检查支持库,一般CentOS系统都带这些库。
# 查看ImageMagick
yum list ImageMagick*
列出:
ImageMagick.i386 6.2.8.0-4.el5_1.1 base
ImageMagick-c++.i386 6.2.8.0-4.el5_1.1 base
ImageMagick-c++-devel.i386 6.2.8.0-4.el5_1.1 base
ImageMagick-devel.i386 6.2.8.0-4.el5_1.1 base
ImageMagick-perl.i386 6.2.8.0-4.el5_1.1 base
# 如果以前安装过,卸载掉ImageMagick:
yum remove ImageMagick.x86_64
yum remove ImageMagick-devel.x86_64
# 安装要用的:
yum install ImageMagick.i386
yum install ImageMagick-devel.i386
# 检查是否成功安装:
rpm -qa | grep -i 'ImageMagick'
# 输出:
ImageMagick-devel-6.2.8.0-3.el5.4
ImageMagick-6.2.8.0-3.el5.4
或
yum list installed | grep ImageMagick*
# 输出:
ImageMagick.x86_64 6.2.8.0-3.el5.4 installed
ImageMagick-devel.x86_64 6.2.8.0-3.el5.4 installed
五、在windows上安装ImageMagick与jmagick
--------------------------------------------------------------------------
在windows安装很简单,关于Q8与Q16区别,前有说明是一样的。
有动态版(dll),有静态版(static),建议使用动态版。
如果安装Q8,请使用文件:
ImageMagick-6.3.9-0-Q8-windows-dll.exe
jmagick-win-6.3.9-Q8.zip
如果安装Q16,请使用文件:
ImageMagick-6.3.9-0-Q16-windows-dll.exe
jmagick-win-6.3.9-Q16.zip
我们以Q8为例:
1、运行ImageMagick-6.3.9-0-Q8-windows-dll.exe,一路下一步,ImageMagick就安装好了
2、解压jmagick-win-6.3.9-Q8.zip,把jmagick.dll放入system32,在你的java项目中使用jmagick.jar包处理图片。
六、常见问题以及解决方法:
--------------------------------------------------------------------------
1、System.out.println(System.getProperty("java.library.path")).
直接用System.out.println(System.getProperty("java.library.path")).
打印出当前环境的路径,然后再把jmagick.dll或jmagick.so 复制到其中的一个路径文件夹中问题解决。
2、magick.MagickException: No image to scale
版本不匹配,要像下面这们,都是同一个版本号
ImageMagick-6.4.0-0.tar.gz
jmagick-6.4.0-src.tar.gz
3、magick.MagickException: Unable to retrieve handle
要调用 magick.MagickImage.destroyImages() 来关闭
4、no decode delegate for this image format
使用:identify -list format
判断有支持几种图片格式,没有的则需要安装对应的格式库
5、单线程转换每张图片大概50ms,两个线程却需要500ms
用convert --version 命令查看
看是否出现openMP字样,出现的话,是因为机器不支持openMP导致的。
需要重新编译./configure --disable-openmp 在进行安装
首先检查一下电脑里已经安装的ImageMagick版本:
convert -version
6、Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\WINDOWS\system32\jmagick.dll: Can't find dependent libraries
我在Windows xp上按照上面的流程安装完成,按理说应该没有问题了,但出现了以上错误。
我打开Eclipse已工作数个小时,然后在开发机器(我本机)Windows xp上安装ImageMagick-6.3.9-0-Q16-windows-dll.exe。也把jmagick.dll放入system32,在你的java项目中使用jmagick.jar包处理图片。
就这么几步当然不会错,但在运行程序时还是出现了上面的错误。
解决:重启Eclipse。加载新的环境变量。
-------------------------------------------
- jmagick-6.4.0-src.tar.gz (521 KB)
- 下载次数: 69
- ImageMagick-6.4.0-0.part2.rar (3.8 MB)
- 下载次数: 52
- ImageMagick-6.4.0-0.part1.rar (6.7 MB)
- 下载次数: 53
- jmagick-win-6.3.9-Q8.zip (84 KB)
- 下载次数: 158
- ImageMagick-6.3.9-0-Q8-windows-dll.rar (8.1 MB)
- 下载次数: 429
- jmagick-win-6.3.9-Q16.zip (84.1 KB)
- 下载次数: 132
- ImageMagick-6.3.9-0-Q16-windows-dll.rar (8.1 MB)
- 下载次数: 580
转:ImageMagick +Jmagick安装的更多相关文章
- ImageMagick jmagick 安装
在安装ImageMagick之前,请检查下面包已经安装 tiff-3.9.5.tar.gz (rpm -qa|grep libtiff检查是否已经安装) libpng-1.2.46.t ...
- 图片处理服务 ImageMagick 的安装和使用
简介 该文章使用目前官方最新版本7.0.8,这里只记录下Windows系统下的安装. 官方网站:http://www.imagemagick.org/script/index.php. ImageMa ...
- php imagemagick库安装使用
imagemagick介绍: ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. ...
- ImageMagick的安装及使用
近期在使用ImageMagick处理酒店团购图片,写篇博客小小的总结下它的安装及使用方法.ImageMagick是一套功能强大且免费的图片处理开发包,能够用来读,写和处理多种格式的图片文件,总之非常强 ...
- ImageMagick 的安装及使用
一.什么是Imagemagick? ImageMagick是一款免费开源的图片编辑软件.既可以通过命令行使用,也可以通过C/C++.Perl.Java.PHP.Python或Ruby调用库编程来完成. ...
- linux安装imagemagick,centos安装imagemagick方法
1.安装文件格式支持库 yum install tcl-devel libpng-devel libjpeg-devel ghostscript-devel bzip2-devel freetype- ...
- java图片处理工具之-ImageMagick+jmagick(二)
简单的图片处理測试类: public class ImageUtil { static{ System.setProperty("jmagick.systemclassl ...
- Linux安装ImageMagick与JMagick完成过程及配置
原文地址:http://www.iitshare.com/linux-install-imagemagick-jmagick.html 一.安装背景 最近在服务器上部署了HapiCMS的产品,因为其对 ...
- Linux端图形处理工具ImageMagick在Centos上的安装
一.安装背景程序要用到用户上传图片,编辑的功能,能进行旋转,裁剪,缩放等. 二.ImageMagick介绍 ImageMagick是用C语言开发图片处理程序.可以对图片进行改变大小.旋转.锐化.减色或 ...
随机推荐
- history对象back()、forward()、go()
history对象back().forward().go()方法history.back() 功能:加载历史列表中的前一个URL(后退). 语法:history.back() 调用该方法的效果等价于点 ...
- 京东手机webapp商城
http://bases.wanggou.com/mcoss/mportal/show?tabid=2&ptype=1&actid=1562&tpl=3&pi=1&am ...
- Android(java)学习笔记202:Handler消息机制的原理和实现
联合学习 Android 异步消息处理机制 让你深入理解 Looper.Handler.Message三者关系 1. 首先我们通过一个实例案例来引出一个异常: (1)布局文件activity_m ...
- sublime text插件
BracketHighlighter : 该插件提供配对标签,或大括号或字符引号的配对高亮显示,加强系统高亮 SublimeTmpl: 文件模版.安装后,文件---> New File (Sub ...
- Junit简介和常用API
测试几个的概念 白盒测试——把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人员是公开的. 回归测试——软件或环境的修复或更正后的“再测试”,自动测试工具对这类测试尤其有用. 单元测试 ...
- java的各个队列之间的联系和区别是什么
java的各个并发队列之间的联系和区别 java.util.concurrent是在并发编程中很常用的实用工具类 ArrayBlockingQueue, DelayQueue, LinkedBlock ...
- Android图表引擎AChartEngine之折线图使用
最近在帮老师做一个课题,其中app端需要显示折线图以便直观地看数据波动,上网查了些资料后发现了这款图标引擎,另外感谢李坤老师的博客,帮助很大. 废话不多说,下面写代码. 一.AChartEngine是 ...
- 内网映射到公网工具 --- ngrok
ngrok可以将内网映射到公网上,这样就可以在公网上访问你的网络服务. 该工具通常在进行app开发和微信开发时比较有用,这样就可避免在公网服务器上单独部署项目,通过映射,直接连接本地服务即可进行开发. ...
- 在使用Kettle的集群排序中 Carte的设定——(基于Windows)
本片文章主要是关于使用Kettle的UI界面: Spoon来实现基于集群的对数据库中的数据表数据进行排序的试验. 以及在实验过程中所要开启的Carte服务的一些配置文件的设置, 还有基于Windows ...
- Sublime Text 3运行JavaScript控制台
Node.js是一个基于Chrome JavaScript运行时建立的平台,小巧方便搭建.运行的端口可以在浏览器上运行,显示效果,但每次用浏览器也挺麻烦,我们这里讲的是在sublime text2中配 ...