ImageMagick 图片处理工具的安装
一、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
我们使用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
make
make install
卸载:
make uninstall
关于Q8, Q16, Q32的说明:
Q8表示: 8-bits per pixel quantum
Q16表示:16-bits per pixel quantum
在 Install-unix.txt文件中的解释说明,避免翻译的不好误导大家,请大家自己去看原文吧。大意是:大多数电脑显示使用8-bit per pixel quantums。使用16-bit per pixel quantums在处理图片时比8-bit慢15%至50%,并须要更多的内存。
处理一张1024x768像素的图片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.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
# 查看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包处理图片。
五、常见问题以及解决方法
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.gz
jmagick-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
记在最后:
期间我还装过jpegsrc.v6b.tar.gz , 也不知是不是必须安装的.
Ubuntu系统已安装有ImageMagick,只是版本不是我须要的版本,
convert文件在放在了/usr/bin,所以我使用/opt360/ImageMagick-6.4.0/bin目录里的convert覆盖了/usr/bin目录里的convert
cd /opt360/ImageMagick-6.4.0/bin
cp ./convert /usr/bin
六、ImageMagick 使用
转换格式命令:
# /usr/local/ImageMagick/bin/convert -format demo.jpg demo.png
将jpg转换成png
指定大小缩放:
# /usr/local/ImageMagick/bin/convert -resize "500x300>" demo.jpg demo_500.jpg
如果图片比500x300小就保持原样,以防小图片被放大失真
去除多余信息:
# /usr/local/ImageMagick/bin/convert -strip input.jpg output.jpg
将多余的信息去除:摄影时的光圈、快门、ISO、日期时间等各种与当时摄影条件相关的讯息,相机品牌型号,色彩编码,拍摄时录制的声音以及全球定位系统(GPS)等信息。
压缩比:
# /usr/local/ImageMagick/bin/convert -quality 75% demo.jpg demo_75.jpg
ImageMagick的命令很多 具体可以查看官方手册
http://www.imagemagick.org/script/command-line-tools.php
参考推荐:
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2015-07-30 02:30:32
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!