??xml version="1.0" encoding="utf-8" standalone="yes"?> Pure java的图片操作,不依赖操作系l的功能Q图片运量比较大,如果批处理图片或囄size较大的话Q如1M左右的图片)的话Q性能肯定不能满Q用JNI(java本地调用)Q依赖操作系l提供的功能Q?操作扚w、大囄Q就成ؓ首选方案?br /> 把install path加入pȝpath(有些版本自己会默认添?Q以便能调用dll.保险赯Q?/p> 然后再把安装目录下的所有dll文g复制到C:\WINDOWS\system32下(因ؓ我出现过只添加\径而不复制q些文g到C:\WINDOWS\system32Q程序运行提C出错的情况Q?/p> 2. 安装JMagickQJMagick website: http://www.yeo.id.au/jmagick/Q?br /> 下蝲JMatick。file name: jmagick-6.2.6-win.zip 把jmagick-6.2.6-win\q16\jmagick.dll copy 到c:\windows\system32目录下,如果E序在运行的时候提C:找不到jmagick路径Q用System.out.println(System.getProperty("java.library.path")). 打印出当前环境的路径Q然后再把jmagick.dll 复制到其中的一个\径文件夹?/p> notesQ?/strong> If you are using Tomcat, or other java applications which have their own classloadersQ?/p> Ҏ1Q?把jmagick-6.2.6-win\jar\jmagick.jar copy到项目的WEB-INF\lib目录下,然后在服务启动初始化的时候,System.setProperty("jmagick.systemclassloader","no"); Q可以在qo器的那个c里面加上这句话Q也可以自己手动建立一个初始化的serverletQ然后加上这句话Q?/p> Ҏ2Q简单的ҎQ把jmagick-6.2.6-win\jar\jmagick.jar 复制?JAVA_HOME%\jre\lib\ext.ok?/p> 下面ȝ下windows + tomcat环境的安装配|?/p> 1Q下载安装ImageMagick-6.3.4-10-Q16-windows-dll.exe 2Q把install path加入pȝpathQ然后把install path下的dll文g复制到C:\WINDOWS\system32 3Q下载JMatick。file name:jmagick-6.2.6-win-im-6.2.9.zip 4Q把q16目录下的jmagick.dll复制到D:\Tomcat5.0\bin下(D:\tomcat是安装\径) 5Q把jar_15目录下的jmagick.jar复制?JAVA_HOME%\jre\lib\ext. 6Q完毕,试 PS: web应用如果部v到tomcat下,那么最好在catalina.bat文g中改变如下设|?br /> 下面把jmagick-6.2.6-win-im-6.2.9目录下的说明文附在q里Q注意看他的Getting Started和Notes部分 This archive contains jmagick.dll 6.2.6 compiled against q8 contains jmagick.dll compiled against ImageMagick 6.2.9-Q8 q16 contains jmagick.dll compiled against ImageMagick 6.2.9-Q16 It was built with gcc mingw 3.4.2 on Windows 2000 and Sun JDK 1.5.0 release 5. 1. Install ImageMagick Notes: Mark Deneen 例子: 安装要求Q?/p>
W一个常用的功能~放QscaleImageQ?br />
首先初始化一个ImageInfo对象,是加蝲要处理的囄路径.
ImageInfo info= new ImageInfo(“F:\\images\\1.jpg”);
然后再把囄信息ImageInfo作ؓ构造MagickImage的参C入?MagickImage 是处理图片的主要cR?nbsp;
MagickImage image= new MagickImage(info);
再对MagickImage的对象选取Ҏ。进行羃放。scaleImage(w, h),W一个参数指按比例羃攑的宽度,W二个就是高度了?br />MagickImage cropped= image .scaleImage(40, 80);
最后把处理完的囄命名(1_scale.jpg)存放到指定的目录?F:/images)?br />cropped.setFileName("F:\\images\\1_scale.jpg");
writeImage指定源图片的ImageInfo 对象?br />cropped.writeImage(info);
q样q单的把原来的囄~放?0X80?_scale.jpg新图片了?br />
W二个常用的功能截取QcropImageQ?br />
首先初始化一个ImageInfo对象,是加蝲要处理的囄路径.
ImageInfo info= new ImageInfo(“F:\\images\\1.jpg”);
再初始化一个合适的宽度和高度,以及起始坐标。就是要处理后图片的大小形状(矩Ş)?br />Rectangle rect = new Rectangle(0, 0, 40, 80);
x,y是起始点的坐标Q一般从囄的左上角开始,默认?.w,h是实际的宽度和高度了,不是按比例截取后的宽度和高度?br />q一点与上面的不同?br />然后再把囄信息ImageInfo作ؓ构造MagickImage的参C入?MagickImage 是处理图片的主要cR?nbsp;
MagickImage image= new MagickImage(info);
再对MagickImage的对象选取Ҏ。进行实际大的截取。cropImage(rect),参数指图片的范围?br />MagickImage cropped = image.cropImage(rect);
最后把处理完的囄命名(1_crop.jpg)存放到指定的目录?F:/images)?br />cropped.setFileName("F:\\images\\1_crop.jpg");
writeImage指定源图片的ImageInfo 对象?br />cropped.writeImage(info);
q样q单的把原来的囄截取?0X80?_crop.jpg新图片了。原囄的规g定大?0X80Q要不然截取的有I白了。自p试就知道了?br />
最后一个常用的功能复制QcopyQ,q个最单了?br />
首先初始化一个ImageInfo对象,是加蝲要处理的囄路径.
ImageInfo info= new ImageInfo(“F:\\images\\1.jpg”);
然后再把囄信息ImageInfo作ؓ构造MagickImage的参C入?MagickImage 是处理图片的主要cR?nbsp;
MagickImage image= new MagickImage(info);
最后把处理完的囄命名(1_copy.jpg)存放到指定的目录?F:/images)?br />image.setFileName("F:\\images\\1_copy.jpg");
writeImage指定源图片的ImageInfo 对象?br />image.writeImage(info);
q个没有用到(cloneImage)ҎQ简单的理解为改变图片的存放路径可以了Q这样就很轻杄实现了copy了,比它自带的cloneImage单多了?br />
]]>
我在winxp环境下安装调试JMagickQƈ成功q行了测试codeQ实C囄的多U操作,~略图、旋转、设|边框、设|背景等{?..,下面记录安装及配|历Ԍ分nl大Ӟ
ImageMagick, JMagick安装、配|及使用Q?br /> q_QwinXP
1. 安装ImageMagickQImageMagick website:http://www.imagemagick.org/script/index.phpQ?br /> 下蝲q安装ImageMagick。file name: ImageMagick-6.2.6-8-Q16-windows-dll.exe
download address: http://prdownloads.sourceforge.net/imagemagick/ImageMagick-6.2.6-8-Q16-windows-dll.exe?download
安装成功后,
download address: http://www.yeo.id.au/jmagick/quickload/win-6.2.6/jmagick-6.2.6-win.zip
解压?/p>
set JAVA_OPTS=%JAVA_OPTS% -Xms256M -Xmx768M -XX:MaxPermSize=128M -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="${catalina.base}\conf\logging.properties"
避免heap溢出的问题,参数看你自己的机器而定。( -Xms256M -Xmx768M -XX:MaxPermSize=128M Q?/p>
ImageMagick 6.2.9.
http://www.imagemagick.org/download/binaries/ImageMagick-6.2.9-4-Q8-windows-dll.exe
http://www.imagemagick.org/download/binaries/ImageMagick-6.2.9-4-Q16-windows-dll.exe
Getting Started:
2. Copy the jmagick.dll corresponding with the Q8 or Q16 ImageMagick you installed to
somewhere in your PATH. I would put it in the same directory as ImageMagick.
3. Put jmagick.jar in your java classpath. If you are using Tomcat, or other java
applications which have their own classloaders, move the jar up to a more global scope.
If you had placed the jar in WEB-INF/lib and reload the webapp, java will attempt to
reload jmagick.dll twice, and it will fail. By moving the jar up, the library will only
be loaded once per jvm lifetime. I place mine in %JAVA_HOME%\jre\lib\ext.
-------------------------------------------------------------------------------------------------
If you see exceptions such as UnsatisfiedLinkError, you did one of the above steps incorrectly
or you are not using the JVM/ImageMagick versions you think you are. Have your java code
print out the java.library.path -- System.getProperty("java.library.path"). Check to ensure
that jmagick.dll is in one of those directories.
-------------------------------------------------------------------------------------------------
If you run your java application as a service, any changes to the PATH environment variable will
not be visible to java until you reboot.
-------------------------------------------------------------------------------------------------
This is the first time I have built jmagick.dll using gcc/mingw. Let me know if you have any issues.
mdeneen at gmail dot com
* 以正方Ş比例输出~放囄
*
* MaxBorderLen : 正方形边?br />*/
public void CoutImage4Square(String srcImage, String DestImage, int MaxBorderLen){
System.setProperty("jmagick.systemclassloader","no");
try{
ImageInfo info = new ImageInfo(srcImage);
MagickImage image = new MagickImage(info);
//取长?/span>
Dimension dim = image.getDimension();
double wImage = dim.getWidth();
double hImage = dim.getHeight();
Boolean bWBig = wImage > hImage? true:false ;
if (bWBig)
{//长大q高
hImage = MaxBorderLen * ( hImage / wImage);
wImage = MaxBorderLen;
}
else
{//反之
wImage = MaxBorderLen * ( wImage / hImage);
hImage = MaxBorderLen;
}
//输出
MagickImage scaled = image.scaleImage((int)wImage, (int)hImage);
scaled.setFileName(DestImage);
scaled.writeImage(info);
}catch(MagickApiException ex){
}catch(MagickException ex){
}
}
]]>下蝲安装
下蝲q程如下Q?br /> 用CVS取源码:
Password: jmagick
cvs -d :pserver:anonymous@jmagick.yeo.nu:/var/cvs/jmagick checkout Jmagick
也可以直接下载JMagick-5.5.6-X.tar.gz包?br /> ҎINSTALL文指示Q编译如下:
cd Jmagick-5.5.6-X
对CVS取回来的源码
cd JMagick
autoconf
以下ZU情况都相同的部?br /> ./configure
make all
su
make install
make javadoc
make test <--如果x-win没有启动Q大部分试是成功的Q但也会昄一些错误信息,因ؓ没法昄囄?/div> 通过JMagick,实现JSP上传囄文g后生成羃略图的功?/h4>
Jmagick自n带的Test.javaE序Q演CZ如何使用JMagick来实现图片的复制、信息获取、斜角、特效、组合、改变大、加Ҏ、旋转、切片、改变格式、去色等{功能,~程的重要参考?br /> 下面主要描述如何实现用JSP上传的图片,q行压羃生成~略图。用jsp上传文g的全部代码,参见利用apache-commons-fileupload写jsp上传文g,下面只描q图片压~的实现?/p>
$TOMCATHOME/webapps/yourproject/WEB-INF/classes/com/hedong/JMagick/PicResize.java
import org.apache.log4j.*;
import java.awt.Dimension;
import java.awt.Rectangle;
import magick.ImageInfo;
import magick.MagickImage;
import magick.MagickException;
import magick.QuantizeInfo;
import magick.ColorspaceType;
import magick.MagickApiException;
import magick.PixelPacket;
import magick.DrawInfo;
import magick.ResolutionType;
import magick.ProfileInfo;
import magick.MontageInfo;
import magick.Magick;
import magick.MagickInfo;
import java.io.IOException;
import java.io.FileOutputStream;
public class PicResize {
static Logger logger = Logger.getLogger(PicResize.class.getName());
public void resize(String picFrom,String picTo) {
try {
// Resize
ImageInfo info = new ImageInfo(picFrom);
MagickImage image = new MagickImage(new ImageInfo(picFrom));
MagickImage scaled = image.scaleImage(100, 80);//图片文件的大小.
scaled.setFileName(picTo);
scaled.writeImage(info);
logger.info("alter pic form "+picFrom +" to "+picTo);
} catch(MagickApiException ex) {
logger.error("MagickException: " + ex + ": " + ex.getReason() + ", " + ex.getDescription());
} catch(MagickException ex) {
logger.error("MagickException: " + ex);
}
}
}
注意Q需要将~译JMagick生成的lib/jmagick.jar包,复制?TOMCATHOME/webapps/yourproject/WEB-INF/lib目录下?/p>
]]>
]]>
我在winxp环境下安装调试JMagickQƈ成功q行了测试codeQ实C囄的多U操作,~略图、旋转、设|边框、设|背景等{?..,下面记录安装及配|历Ԍ分nl大Ӟ
ImageMagick, JMagick安装、配|及使用Q?br />
q_QwinXP
1. 安装ImageMagickQImageMagick website:http://www.imagemagick.org/script/index.phpQ?br />
下蝲q安装ImageMagick。file name: ImageMagick-6.2.6-8-Q16-windows-dll.exe
download address: http://prdownloads.sourceforge.net/imagemagick/ImageMagick-6.2.6-8-Q16-windows-dll.exe?download
安装成功后,
把install path加入pȝpath(有些版本自己会默认添?Q以便能调用dll.保险赯Q?/p>
然后再把安装目录下的所有dll文g复制到C:\WINDOWS\system32下(因ؓ我出现过只添加\径而不复制q些文g到C:\WINDOWS\system32Q程序运行提C出错的情况Q?/p>
2. 安装JMagickQJMagick website: http://www.yeo.id.au/jmagick/Q?br />
下蝲JMatick。file name: jmagick-6.2.6-win.zip
download address: http://www.yeo.id.au/jmagick/quickload/win-6.2.6/jmagick-6.2.6-win.zip
解压?/p>
把jmagick-6.2.6-win\q16\jmagick.dll copy 到c:\windows\system32目录下,如果E序在运行的时候提C:找不到jmagick路径Q用System.out.println(System.getProperty("java.library.path")). 打印出当前环境的路径Q然后再把jmagick.dll 复制到其中的一个\径文件夹?/p>
notesQ?/strong> If you are using Tomcat, or other java applications which have their own classloadersQ?/p>
Ҏ1Q?把jmagick-6.2.6-win\jar\jmagick.jar copy到项目的WEB-INF\lib目录下,然后在服务启动初始化的时候,System.setProperty("jmagick.systemclassloader","no"); Q可以在qo器的那个c里面加上这句话Q也可以自己手动建立一个初始化的serverletQ然后加上这句话Q?/p>
Ҏ2Q简单的ҎQ把jmagick-6.2.6-win\jar\jmagick.jar 复制?JAVA_HOME%\jre\lib\ext.ok?/p>
下面ȝ下windows + tomcat环境的安装配|?/p>
1Q下载安装ImageMagick-6.3.4-10-Q16-windows-dll.exe 2Q把install path加入pȝpathQ然后把install path下的dll文g复制到C:\WINDOWS\system32 3Q下载JMatick。file name:jmagick-6.2.6-win-im-6.2.9.zip 4Q把q16目录下的jmagick.dll复制到D:\Tomcat5.0\bin下(D:\tomcat是安装\径) 5Q把jar_15目录下的jmagick.jar复制?JAVA_HOME%\jre\lib\ext. 6Q完毕,试 PS: web应用如果部v到tomcat下,那么最好在catalina.bat文g中改变如下设|?br />
下面把jmagick-6.2.6-win-im-6.2.9目录下的说明文附在q里Q注意看他的Getting Started和Notes部分 This archive contains jmagick.dll 6.2.6 compiled against q8 contains jmagick.dll compiled against ImageMagick 6.2.9-Q8 q16 contains jmagick.dll compiled against ImageMagick 6.2.9-Q16 It was built with gcc mingw 3.4.2 on Windows 2000 and Sun JDK 1.5.0 release 5. 1. Install ImageMagick Notes: Mark Deneen --------------------------------------------------------------------------------------------------------------------------------- 例子: ------------------------------------------------------------------------------------------------------------------------- 安装要求Q?/p>
Posted by Hilton at October 29, 2003 12:13 AM | TrackBack 然后我把所有的*.dll文g全部COPY到system32目录下,l果Q它不报错了Q直接把WEB服务器给搞停了?/p>
Posted by: rosen at April 27, 2004 01:42 PM 已经按照各位的方法,但还是不行,报错Q无法找到动态链接库CORE_RL_magick_.dll?/p>
Posted by: rosen at April 27, 2004 01:21 PM Sorry 心急看错了Q!Q?/p>
Posted by: rosen at April 27, 2004 12:32 PM JMagick包内没有PicResize.javac,而我恰恰需要羃略图功能Q?/p>
Posted by: rosen at April 27, 2004 12:24 PM to Hilton today is my birthday :) 我明明在windowsXP?cmd ?q行 class文gQ是可以处理囄的,但是Z么放?tomcat 里面去运行,报Internal error() 呢?Q? gq位朋友我现在正在看imageJ的东西,但一下子没有搞好Q想得到你的帮助呀Q?br />
联系一下!QQ 4414155 先装ImageMagick. 我在LINUX下安装他出现Unable to find ImageMagick header files To Hilton : 谢谢你的帮助?/p>
BTWQ与初用者分享一点:win环境下,只下载jmagick.jar和jmagick.dll是不够的Q还需要下载其他的dll一起用才可以Q给大家一个链?a >http://www.infomall.cn/cgi-bin/mallgate/20040514/http://www.yeo.id.au/jmagick/quickload/win-5.5.7/ImageMagick-5.5.7-Q8-windows-dll.exeQ安装后记得要重新启动pc。我听从下面前辈的也jmagick.dll攑֜了system32目录下面了?/a> To ryan; ?JAMGICKHOME/src/test目录下。我把它打了个包Q你也可以从 http://www.infomall.cn/cgi-bin/mallgate/20040514/http://hedong.3322.org/archives/docs/test.tar.gz 下蝲?/p>
Posted by: Hilton at January 12, 2004 11:52 AM 你们说的Test.java在哪儿? //………………………………………………………… Posted by: zhm at December 12, 2003 08:39 AM zhmQ你可以M?a >http://www.infomall.cn/cgi-bin/mallgate/20040514/http://www.yeo.id.au/jmagick/quickload/JMagick-5.5.1-bin-win32.zip about java.lang.UnsatisfiedLinkError: no JMagick in java.library.path. imagesj 老板又要我研I用JMagicK做动画,又要研究了。。。。?/p>
Posted by: zhm at December 24, 2003 06:48 PM To zhm; 贺你安装jmagick成功Q?/p>
?a >http://www.infomall.cn/cgi-bin/mallgate/20040514/http://www.dependencywalker.com/ 下蝲q个E序Q安装运行它Q然后利用其"open"功能打开要看的程序就可以了?/p>
Hilton 问一下版主,怎么用depends看一个dll依赖于哪些文Ӟ谢谢?/p>
Posted by: zhm at December 19, 2003 10:22 AM 呵呵Q我的也是在Windows下运行的Q折腾了一个星期,ȝ成功了,要把那个jmagick.dll考到pȝ的System32目录下面Q然后下载一个ImageMagick-5.5.7-Q16-windows-dll.exe安装了,一切都OK了?/p>
Posted by: zhm at December 19, 2003 10:21 AM 呵呵Q我的也是在Windows下运行的Q折腾了一个星期,ȝ成功了,要把那个jmagick.dll考到pȝ的System32目录下面Q然后下载一个ImageMagick-5.5.7-Q16-windows-dll.exe安装了,一切都OK了?/p>
Posted by: zhm at December 19, 2003 10:21 AM 是不是需要装imagemagick? 真不好意思,我用jmagick是在linux下的Q所以对windows下的东东不是很熟悉?/p>
Hilton 我把jmagick.dll和jmagick.jar都放到system32下但出现java.lang.UnsatisfiedLinkError: C:\WINDOWS\system32\JMagick.dll: Can't find dependent libraries。我是在IDEA开发中调用的,L不成功,Z么jmagickq要有dllQ不象其他java的工具包Q?/p>
Posted by: at December 13, 2003 11:59 AM To zhm, JMagick的文确实很,你可以参?a >http://www.infomall.cn/cgi-bin/mallgate/20040514/http://www.yeo.id.au/cgi-bin/jmagick/fom 。或去ImageMagick的主늜一下,因ؓjmagick仅是对imagemagick的一个java包装?/p>
另外Q这个包中的Test.javaQ把几乎所有的功能都演CZ一下,也可以看看?/p>
Hilton 我在JmagicK的主上找不到JmagicK实现的API的有x,所以还是不知道具体怎么用JmagicKQ请问版主那里有文档吗?或者有其他助于学JmagicK的好东东?/p>
Posted by: zhm at December 12, 2003 08:39 AM 攑֜q行E序时的当前目录Q或者放到windows的system32目录下试试?/p>
Posted by: Hilton at December 11, 2003 10:00 PM 请问我在q行是出现java.lang.UnsatisfiedLinkError: no JMagick in java.library.path错误。jmagick.dll应该怎么用? 你好Q我最q也在看ZJAVA的图像处理: 我想利用q个包将囄动态生成各U幅面的~略图(包含站点水印Q。然后图片可以通过PATH_INFO解析参数Q比如生成一?00*150的水华ͼ --------------------------------------------------------------------------------------------------------------------------------- MagickImage大家可能都用q?它主要处理一些图?它可以处?0多种的图片类?它的功能非常强大,而我们在实际的应用中,主要用到它的~放Q截取,复制功能。其他的一些如写入文字Q加背景Ԍ旋{。。。用的少?/p>
W一个常用的功能~放QscaleImageQ?/p>
首先初始化一个ImageInfo对象,是加蝲要处理的囄路径. 首先初始化一个ImageInfo对象,是加蝲要处理的囄路径. 最后把处理完的囄命名(1_copy.jpg)存放到指定的目录?F:/images)?
set JAVA_OPTS=%JAVA_OPTS% -Xms256M -Xmx768M -XX:MaxPermSize=128M -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="${catalina.base}\conf\logging.properties"
避免heap溢出的问题,参数看你自己的机器而定。( -Xms256M -Xmx768M -XX:MaxPermSize=128M Q?/p>
ImageMagick 6.2.9.
http://www.imagemagick.org/download/binaries/ImageMagick-6.2.9-4-Q8-windows-dll.exe
http://www.imagemagick.org/download/binaries/ImageMagick-6.2.9-4-Q16-windows-dll.exe
Getting Started:
2. Copy the jmagick.dll corresponding with the Q8 or Q16 ImageMagick you installed to
somewhere in your PATH. I would put it in the same directory as ImageMagick.
3. Put jmagick.jar in your java classpath. If you are using Tomcat, or other java
applications which have their own classloaders, move the jar up to a more global scope.
If you had placed the jar in WEB-INF/lib and reload the webapp, java will attempt to
reload jmagick.dll twice, and it will fail. By moving the jar up, the library will only
be loaded once per jvm lifetime. I place mine in %JAVA_HOME%\jre\lib\ext.
-------------------------------------------------------------------------------------------------
If you see exceptions such as UnsatisfiedLinkError, you did one of the above steps incorrectly
or you are not using the JVM/ImageMagick versions you think you are. Have your java code
print out the java.library.path -- System.getProperty("java.library.path"). Check to ensure
that jmagick.dll is in one of those directories.
-------------------------------------------------------------------------------------------------
If you run your java application as a service, any changes to the PATH environment variable will
not be visible to java until you reboot.
-------------------------------------------------------------------------------------------------
This is the first time I have built jmagick.dll using gcc/mingw. Let me know if you have any issues.
mdeneen at gmail dot com
* 以正方Ş比例输出~放囄
*
* MaxBorderLen : 正方形边?br />*/
public void CoutImage4Square(String srcImage, String DestImage, int MaxBorderLen){
System.setProperty("jmagick.systemclassloader","no");
try{
ImageInfo info = new ImageInfo(srcImage);
MagickImage image = new MagickImage(info);
//取长?/span>
Dimension dim = image.getDimension();
double wImage = dim.getWidth();
double hImage = dim.getHeight();
Boolean bWBig = wImage > hImage? true:false ;
if (bWBig)
{//长大q高
hImage = MaxBorderLen * ( hImage / wImage);
wImage = MaxBorderLen;
}
else
{//反之
wImage = MaxBorderLen * ( wImage / hImage);
hImage = MaxBorderLen;
}
//输出
MagickImage scaled = image.scaleImage((int)wImage, (int)hImage);
scaled.setFileName(DestImage);
scaled.writeImage(info);
}catch(MagickApiException ex){
}catch(MagickException ex){
}
} JMagick是一个开源APIQ利用JNI(Java Native Interface)技术实C?a >ImageMagickAPI的Java讉K接口,因此也将比纯Java实现的图片操作函数在速度上要快。JMagick只实CImageMagicAPI的一部分功能Q它的发行遵?a>LGPL协议?br />
ImageMagick请参考其官方|站?a >ImageMagick学习?/p>
下蝲安装
下蝲q程如下Q?br />
用CVS取源码:
Password: jmagick
cvs -d :pserver:anonymous@jmagick.yeo.nu:/var/cvs/jmagick checkout Jmagick
也可以直接下载JMagick-5.5.6-X.tar.gz包?br />
ҎINSTALL文指示Q编译如下:
cd Jmagick-5.5.6-X
对CVS取回来的源码
cd JMagick
autoconf
以下ZU情况都相同的部?br />
./configure
make all
su
make install
make javadoc
make test <--如果x-win没有启动Q大部分试是成功的Q但也会昄一些错误信息,因ؓ没法昄囄?/ins>通过JMagick,实现JSP上传囄文g后生成羃略图的功?/h4>
Jmagick自n带的Test.javaE序Q演CZ如何使用JMagick来实现图片的复制、信息获取、斜角、特效、组合、改变大、加Ҏ、旋转、切片、改变格式、去色等{功能,~程的重要参考?br />
下面主要描述如何实现用JSP上传的图片,q行压羃生成~略图。用jsp上传文g的全部代码,参见利用apache-commons-fileupload写jsp上传文g,下面只描q图片压~的实现?/p>
$TOMCATHOME/webapps/yourproject/WEB-INF/classes/com/hedong/JMagick/PicResize.java
import org.apache.log4j.*;
import java.awt.Dimension;
import java.awt.Rectangle;
import magick.ImageInfo;
import magick.MagickImage;
import magick.MagickException;
import magick.QuantizeInfo;
import magick.ColorspaceType;
import magick.MagickApiException;
import magick.PixelPacket;
import magick.DrawInfo;
import magick.ResolutionType;
import magick.ProfileInfo;
import magick.MontageInfo;
import magick.Magick;
import magick.MagickInfo;
import java.io.IOException;
import java.io.FileOutputStream;
public class PicResize {
static Logger logger = Logger.getLogger(PicResize.class.getName());
public void resize(String picFrom,String picTo) {
try {
// Resize
ImageInfo info = new ImageInfo(picFrom);
MagickImage image = new MagickImage(new ImageInfo(picFrom));
MagickImage scaled = image.scaleImage(100, 80);//图片文件的大小.
scaled.setFileName(picTo);
scaled.writeImage(info);
logger.info("alter pic form "+picFrom +" to "+picTo);
} catch(MagickApiException ex) {
logger.error("MagickException: " + ex + ": " + ex.getReason() + ", " + ex.getDescription());
} catch(MagickException ex) {
logger.error("MagickException: " + ex);
}
}
}
注意Q需要将~译JMagick生成的lib/jmagick.jar包,复制?TOMCATHOME/webapps/yourproject/WEB-INF/lib目录下?/p>
我装了imagemagick6,然后也把jmagick.dll拷到system32下,但是Z么运行时q是报错啊。报错:无法定位E序输入点DestroyMagickInfo于动态链接库CORE_RL_magick_.dll?/p>
Posted by: heyq at April 21, 2004 02:40 PM
而且internal error() 那一大串的东西,我根本看部懂Q又不是说找不到 什么其他的c,
啊!Q?烦啊Q!Q?大哥指教一下好吗?Q?
q是怎么回事Q然后蟩出安装。我是在他主上下蝲了安装的。试了两个版本都如此?/p>
Posted by: huifei at February 18, 2004 01:15 PM
我在JmagicK的主上找不到JmagicK实现的API的有x档,所以还是不知道具体怎么用JmagicKQ请问版主那里有文吗?或者有其他助于学JmagicK的好东东?/p>
//…………………………………………………………
q个包,里面包括了doc?/p>
Posted by: at January 12, 2004 11:39 AM
copy libJMagick.so $resin_home/lib
应用
你用depends看看Q这个dll依赖于哪些文Ӟ
你看看这个如何:ImageJ
http://www.infomall.cn/cgi-bin/mallgate/20040514/http://rsb.info.nih.gov/ij/
http://www.infomall.cn/cgi-bin/mallgate/20040514/http://www.chedong.com/thumb/200/150/orig.jpg
ImageInfo info= new ImageInfo(“F:\\images\\1.jpg”);
然后再把囄信息ImageInfo作ؓ构造MagickImage的参C入?MagickImage 是处理图片的主要cR?nbsp;
MagickImage image= new MagickImage(info);
再对MagickImage的对象选取Ҏ。进行羃放。scaleImage(w, h),W一个参数指按比例羃攑的宽度,W二个就是高度了?br />
MagickImage cropped= image .scaleImage(40, 80);
最后把处理完的囄命名(1_scale.jpg)存放到指定的目录?F:/images)?
cropped.setFileName("F:\\images\\1_scale.jpg");
writeImage指定源图片的ImageInfo 对象?br />
cropped.writeImage(info);
q样q单的把原来的囄~放?0X80?_scale.jpg新图片了?/p>
W二个常用的功能截取QcropImageQ?/p>
ImageInfo info= new ImageInfo(“F:\\images\\1.jpg”);
再初始化一个合适的宽度和高度,以及起始坐标。就是要处理后图片的大小形状(矩Ş)?br />
Rectangle rect = new Rectangle(0, 0, 40, 80);
x,y是起始点的坐标Q一般从囄的左上角开始,默认?.w,h是实际的宽度和高度了,不是按比例截取后的宽度和高度?br />
q一点与上面的不同?br />
然后再把囄信息ImageInfo作ؓ构造MagickImage的参C入?MagickImage 是处理图片的主要cR?nbsp;
MagickImage image= new MagickImage(info);
再对MagickImage的对象选取Ҏ。进行实际大的截取。cropImage(rect),参数指图片的范围?br />
MagickImage cropped = image.cropImage(rect);
最后把处理完的囄命名(1_crop.jpg)存放到指定的目录?F:/images)?
cropped.setFileName("F:\\images\\1_crop.jpg");
writeImage指定源图片的ImageInfo 对象?br />
cropped.writeImage(info);
q样q单的把原来的囄截取?0X80?_crop.jpg新图片了。原囄的规g定大?0X80Q要不然截取的有I白了。自p试就知道了?br />
最后一个常用的功能复制QcopyQ,q个最单了?br />
首先初始化一个ImageInfo对象,是加蝲要处理的囄路径.
ImageInfo info= new ImageInfo(“F:\\images\\1.jpg”);
然后再把囄信息ImageInfo作ؓ构造MagickImage的参C入?MagickImage 是处理图片的主要cR?nbsp;
MagickImage image= new MagickImage(info);
image.setFileName("F:\\images\\1_copy.jpg");
writeImage指定源图片的ImageInfo 对象?br />
image.writeImage(info);
q个没有用到(cloneImage)ҎQ简单的理解为改变图片的存放路径可以了Q这样就很轻杄实现了copy了,比它自带的cloneImage单多了?/p>
]]>
վ֩ģ壺
һ|
ҹϼ|
ëƬؿ|
רȷӰ|
ձxxwwxxwwƵ|
ѹۿ|
Ʒþ˰|
ѿС12Ƶ|
˵վ|
Ʒۺҹҹ|
þþƷ㽶|
Բٸ|
aëƬѸëƬƵ|
˱ɫ߹ۿ|
Ʒ99þþþĻ
|
˳ɫ777777Ʒ|
ۺС˵|
67194츾ѹۿ
|
Ʒҹ|
ɫۺվ|
ˬˬձƵ|
վ18ѹۿ|
ƷA߹ۿ|
þƷվ|
˳Ƶ߹ۿƵ|
ҹƷѹۿ|
97߹ۿƵ|
av߹ۿ|
þþƷavպ|
Ļһ|
ββ8xѾþ|
91ڹӰ|
õɫƵȫ|
A˵߹ۿ|
ƷƵ|
һ|
?V˾Ʒպ|
һaëƬƵ|
߹ۿwwwձվ|
þþƷƵ|
йëƬѹۿ|