`

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

下载地址:http://www.freetype.org/

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。加载新的环境变量。

 

-------------------------------------------

转载请注明出处:http://elf8848.iteye.com/blog/455675

 

 

 

 

  • 大小: 99.5 KB
分享到:
评论
4 楼 bolo 2014-03-26  
引用

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

我相问下,这个格式库去哪找?
3 楼 yangb2008 2013-10-27  
Hi,哥们,支持jbig1的格式吗?不是jbig2
2 楼 bin_1715575332 2013-09-04  
刚好用到这个打开连接发现了主任的文章~
1 楼 exhoty 2013-07-09  

相关推荐

    ImageMagick-6.3.9+jmagick组合

    ImageMagick是一款强大的开源图像处理工具,而JMagick是其与Java平台的桥梁,使得在Java应用程序中能够调用ImageMagick的功能。这个“ImageMagick-6.3.9+jmagick组合”指的是ImageMagick的一个特定版本6.3.9与...

    linux下安装ImageMagick-6.5+JMagick -6.4 经测试成功的

    注:资源包中包含了必要的.tar.gz安装包,ImageMagick-6.5太大了点,自己去官网下载 Jmagick包中的Changelog.txt中有...让大家分享一下,本人经过两天的学习,终于将最新版的ImageMagick与JMagick安装成功 作者:雷喜青

    imageMagick+ima4java配置

    - **安装路径**:建议安装到默认路径“C:\Program Files\ImageMagick-6.4.6-4-Q16”,以便后续配置环境变量。 2. **Im4Java** - **下载地址**:...

    jmagick安装和配置

    **JMagick安装与配置详解** JMagick是一款强大的Java接口,它允许Java应用程序与ImageMagick图像处理库进行交互,从而实现丰富的图像操作功能。本文将详细介绍如何在Java环境中安装和配置JMagick,以及如何使用提供...

    64位Linux安装ImageMagick

    在64位Linux环境下安装ImageMagick,特别是与JMagick配合使用,是一个涉及多个步骤的过程,主要目的是为了实现Java应用程序对ImageMagick图像处理功能的调用。以下是详细的安装步骤和相关知识点: 1. **卸载旧版本*...

    jmagick-6.2.4-1-IM-6.2.5.jar,ImageMagick-6.2.5-4-Q16-windows-dll.exe

    **压缩包子文件的文件名称列表** 中,"ImageMagick 详细安装使用 linux (jmagick)_java.mht"可能是一个包含如何在Linux系统上安装和使用JavaMagick的教程文件,.mht是MHTML(多用途互联网邮件扩展)文件,通常用来...

    jmagick 软件、安装说明(window和linux两个版本)

    2. 下载JMagick的对应版本,确保与已安装的ImageMagick版本兼容。 3. 解压缩JMagick的ZIP文件,找到`jmagick-<version>.dll`文件并将其复制到Java的`bin`目录下。 4. 设置环境变量`JMAGICK_HOME`指向JMagick的安装...

    Jmagick32位的和Jmagick64位的Jmagick.dll,Jmagick.jar

    Jmagick是一款将ImageMagick图像处理库与Java平台相结合的扩展库,它允许Java开发者利用强大的ImageMagick功能来处理图像。在Java应用程序中,Jmagick通过Jmagick.dll动态链接库和Jmagick.jar文件提供对底层C++接口...

    ImageMagick安装支持heic格式.docx

    在Java环境中,可以使用JavaMagick或JMagick这样的Java绑定库,它们提供了与ImageMagick交互的API,使得在Java代码中调用ImageMagick的功能变得简单。首先,确保正确配置了这些库的依赖,并按照ImageMagick的命令行...

    im4java-ImageMagick图片压缩处理

    因为im4java是基于imagemagick的commandline进行调用的java接口,不像 jmagick那样用java jni调用本地imagemagick的api那么复杂。其实安装imagemagick在任何平台都是一样的安装,在linux下面有rpm包,安装那个包,...

    jmagick.jar 用法

    在使用 JMagick 之前,需要先确保已经正确安装了 ImageMagick。在大多数操作系统上,可以通过官方源或包管理器进行安装。接着,下载 JMagick 的源代码或预编译的 JAR 文件,将其添加到项目的类路径中。如果使用的是 ...

    ImageMagick

    安装ImageMagick-6.3.9-0-Q8-windows-dll.exe,按照网上说法把安装后根目录下的所有.dll文件拷贝到C:\WINDOWS\system32下。不过没拷贝成功。略之不理。 jmagick-win-6.3.9-Q8.zip解压缩。将里面的jmagick.dll拷贝至C...

    jmagick-win-5.5.7-Q8.zip

    "jmagick-win-5.5.7-Q8.zip"这个压缩包中包含了在Windows环境下运行JMagick所需的所有组件,包括核心库文件"jmagick.dll"、Java类库文件"jmagick.jar"以及ImageMagick的安装程序"ImageMagick-5.5.7-Q8-windows-dll....

    ImageMagick JmagicK 图片修改工具套件新版有问题,6.3.9 完全验证稳定可用

    在网上找了N多个ImageMagick与相关的Jmaigck,结果CSDN上面其他下载的配合起来总是会有问题,要么JVM崩溃,要么找不到DLL文件。自己去官网问了很久,才找到一对比较稳定的版本,6.3.9的,保存起来也希望大家能够喜欢...

    ImageMagick使用手册

    获取最新版本的安装程序,例如`ImageMagick-6.2.6-8-Q16-windows-dll.exe`,安装完成后将安装路径添加到系统环境变量PATH中,这样可以在命令行中直接调用其提供的命令行工具。 2. 接着,下载JMagick。可以从`...

    jmagick.zip

    在"ImageMagick-6.3.9-0-Q16-windows-dll.exe"这个文件中,我们看到的是ImageMagick的一个Windows可执行安装程序,包含了所需的DLL文件和其他资源,用户可以通过这个安装程序在Windows系统上部署ImageMagick。...

    jmagick 用法

    JMagick 是一个 Java 的图像处理库,它提供了对 ImageMagick 图像处理库的 Java 接口。ImageMagick 是一个强大的跨平台命令行工具集,用于读取、转换和写入多种格式的图像。通过 JMagick,Java 开发者可以方便地在...

    jmagick6.4.0

    **JMagick 6.4.0:Java与ImageMagick的强大结合** JMagick是ImageMagick图像处理库的一个Java接口,它为Java开发者提供了一种高效且灵活的方式来处理和操作图像。ImageMagick是一个功能丰富的开源跨平台工具集,...

    jmagick-win-6.3.9

    JMagick,一个与标题“jmagick-win-6.3.9”相对应的工具,是Java平台上的一个强大扩展,它为Java开发者提供了一个方便的接口来操作ImageMagick库,从而实现高效的图像处理功能。本文将深入探讨JMagick的特性和应用...

Global site tag (gtag.js) - Google Analytics