ImageMagick安装配置 for java项目 (使用jmagick)

ImageMagick安装配置 for java项目 (使用jmagick)

目录:

一、ImageMagick介绍

二、在Linux上用源码安装ImageMagick与jmagick

三、在Linux上使用yum安装ImageMagick

四、在windows上安装ImageMagick与jmagick

五、常见问题以及解决方法

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是不行的。因为ImageMagick开发时没有使用java JNI生成的头文件。

可以使用jmagick解决,jmagick是由c语言开发的,开发时使用了java JNI生成的头文件,所以java可以通过JNI技术调用jmagick。jmagick再调用ImageMagick。这们我们处理图片使用的是jmagick暴露的java接口。

也可以使用JNA来调用ImageMagick,JNA全称是Java Native Access,JNA是在JNI的基础上完善的,方便的我们开发的。JNA项目主页是https://github.com/twall/jna。使用JNA来调用ImageMagick就须要直接操作ImageMagick提供的C接口(API)。

二、在Linux上用源码安装ImageMagick与jmagick

前题:

服务器如果没有安装Jpeg v6b、libPng、FreeType 的要在安装imagemagick之前先装好,否则imagemagick没法读取jpeg和png图片,字体文件也读不了.

—-zlib-1.2.5.tar.gz 支持PNG24

—-libpng-1.2.44.tar.gz 支持PNG 或 libpng-1.4.3.tar.gz版本也可

—-asper-1.900.1.zip 支持JPEG2000—-jpegsrc.v6b.tar.gz 支持jpg 或jpegsrc.v8b.tar.gz版本也可

—-freetype-2.4.4.tar.gz 支持字体—-tiff-3.8.0.tar.gz 支持tif文件 这个用不到,不要安装了

安装jpeg包:

http://www.ijg.org/files/jpegsrc.v6b.tar.gztar -zvxf jpegsrc.v6b.tar.gzcd jpeg-6b/./configure –enable-shared –enable-static ; make ; make install

安装zlib包:

tar -xzvf zlib-1.2.5.tar.gz cd zlib-1.2.5./configuremakemake install

安装png包:先在http://sourceforge.net/projects/libpng/上下载最新的libpng包tar -xzvf libpng-1.2.12.tar.gzcd libpng-1.2.12cp scripts/makefile.std makefilemakemake install

安装freetype

./configuremakemake install

安装Tiff包,安装后才能处理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包,安装后才能处理JPEG2000格式图片unzip jasper-1.900.1.zip cd jasper-1.900.1 CFLAGS=-fPIC ./configure make CFLAGS=-fPIC make CFLAGS=-fPIC install

正题:我们使用jmagick,在ImageMagick官网首页左侧菜单的Program Interfaces菜单中找到jmagick。进入jmagick的主页。

我们使用6.4版本,下载地下是:http://downloads.jmagick.org/6.4.0/我们下载:ImageMagick-6.4.0-0.tar.gzjmagick-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.gzcd ImageMagick-6.4.0-0./configure –prefix=/opt360/ImageMagick-6.4.0 –with-quantum-depth=8 –enable-share –enable-staticmakemake install

–卸载:make uninstall

关于Q8,Q16,Q32的说明:Q8表示: 8-bits per pixel quantumQ16表示:16-bits per pixel quantum在Install-unix.txt文件中的解释说明,避免翻译的不好误导大家,请大家自己去看原文吧。大意是:大多数电脑显示使用8-bit per pixel quantums。使用16-bit per pixel quantums在处理图片时比8-bit慢15%至50%,并须要更多的内存。处理一张1024×768像素的图片8-bit要使用3M内存,16-bit要使用8M内存。8-bit可表示0-255种值,16-bit可表示0-65535种值。默认值是8-bit.

———————————————————–安装jmagick修改文件执行权限:chmod -R 755 文件名tar zvxf jmagick-6.4.0-src.tar.gzcd 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.0make allmake install

下面几步测试可以不执行make simpletest 因没有Junit的jar包报2个错误,不用管。make testmake 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

# 查看ImageMagickyum list ImageMagick*

列出:ImageMagick.i386 6.2.8.0-4.el5_1.1 baseImageMagick-c++.i386 6.2.8.0-4.el5_1.1 baseImageMagick-c++-devel.i386 6.2.8.0-4.el5_1.1 baseImageMagick-devel.i386 6.2.8.0-4.el5_1.1 baseImageMagick-perl.i386 6.2.8.0-4.el5_1.1 base

# 如果以前安装过,卸载掉ImageMagick:yum remove ImageMagick.x86_64yum 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.4ImageMagick-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包处理图片。

五、常见问题以及解决方法:

System.out.println(System.getProperty("java.library.path")). 直接用System.out.println(System.getProperty("java.library.path")). 打印出当前环境的路径,然后再把jmagick.dll或jmagick.so 复制到其中的一个路径文件夹中问题解决。

magick.MagickException: No image to scale版本不匹配,要像下面这们,都是同一个版本号ImageMagick-6.4.0-0.tar.gzjmagick-6.4.0-src.tar.gz

magick.MagickException: Unable to retrieve handle要调用 magick.MagickImage.destroyImages() 来关闭

no decode delegate for this image format使用:identify -list format判断有支持几种图片格式,没有的则需要安装对应的格式库

单线程转换每张图片大概50ms,两个线程却需要500ms?用convert –version 命令查看看是否出现openMP字样,出现的话,是因为机器不支持openMP导致的。需要重新编译./configure –disable-openmp 在进行安装

首先检查一下电脑里已经安装的ImageMagick版本:convert -version

记在最后:Ubuntu系统已安装有ImageMagick,只是版本不是我须要的版本,convert文件在放在了/usr/bin,所以我使用/opt360/ImageMagick-6.4.0/bin目录里的convert覆盖了/usr/bin目录里的convertcd /opt360/ImageMagick-6.4.0/bincp ./convert /usr/bin

http://elf8848.iteye.com/blog/455675

——————————————-参考:ImageMagick中文站http://www.imagemagick.com.cn

没有预兆目的地在哪,前进的脚步不能停下,

ImageMagick安装配置 for java项目 (使用jmagick)

相关文章:

你感兴趣的文章:

标签云: