下載地址為:http://downloads.jmagick.org/
先下載安裝 imagemagick-6.3.9-0-q16-windows-dll.exe,安裝目錄下(按自己所安裝的目錄找) 下的所有dll檔案 copy 到系統硬碟下的 “c:windowssystem32”檔案夾裡.
再下載對應的jmagick jmagick-win-6.3.9-q16.zip 解壓 jmagick.dll 複製到系統硬碟下的 “c:windowssystem32”檔案夾裡; jmagick.jar 複製到tomcat下的lib檔案夾裡 或所使用項目的web-inf下lib檔案裡
則等比例縮放
public static void changeimge(file img, int width, int height) {
try {
image image = imageio.read(img);
//圖片尺寸的大小處理,如果長寬都小於規定大小,則返回,如果有一個大於規定大小,則等比例縮放
int srch = image.getheight(null);
int srcw = image.getwidth(null);
if (srch <= height && srcw <= width) {
return;
}
int tmph = width;
int tmpw = height;
//在長度和寬度都做了限制,不能超過設定值
while (srch > height || srcw > width) {
if(srcw > width) {
tmph = srch * width / srcw;
srch = tmph;
srcw=width;
}
if(srch > height) {
tmpw = srcw * height / srch;
srcw = tmpw;
srch=height;
}
}
bufferedimage bufferedimage = new bufferedimage(srcw, srch,
bufferedimage.type_3byte_bgr);
bufferedimage.getgraphics().drawimage(
image.getscaledinstance(srcw, srch, image.scale_smooth), 0,
0, srcw, srch, null);
fileoutputstream fos = new fileoutputstream(img);
jpegimageencoder encoder = jpegcodec.createjpegencoder(fos);
encoder.encode(bufferedimage);
fos.close();
// system.out.println("轉換成功...");
} catch (ioexception e) {
e.printstacktrace();
throw new illegalstateexception("圖片轉換出錯!", e);
}
}
代碼二
java代碼
import java.awt.dimension;
import java.awt.rectangle;
import java.text.simpledateformat;
import java.util.date;
import magick.compositeoperator;
import magick.compressiontype;
import magick.drawinfo;
import magick.imageinfo;
import magick.magickexception;
import magick.magickimage;
import magick.pixelpacket;
import magick.previewtype;
public class imageutils {
static{
//不能漏掉這個,不然jmagick.jar的路徑找不到
system.setproperty("jmagick.systemclassloader","no");
}
看一款利用jmagick產生縮圖
import java.awt.dimension;
import java.awt.rectangle;
import java.awt.image.bufferedimage;
import java.io.file;
import java.text.simpledateformat;
import java.util.date;
import javax.imageio.imageio;
import magick.compositeoperator;
import magick.compressiontype;
import magick.drawinfo;
import magick.imageinfo;
import magick.magickexception;
import magick.magickimage;
import magick.pixelpacket;
import magick.previewtype;
public class imageutil2 {
static {
// 不能漏掉這個,不然jmagick.jar的路徑找不到
system.setproperty("jmagick.systemclassloader", "no");
}
/**
* 壓縮圖片
*
* @param filepath 源檔案路徑
* @param topath 縮圖路徑
*/
public void createimage(string filepath,string topath, int width, int height) {
imageinfo info = null;
magickimage image = null;
magickimage scaled = null;
try {
info = new imageinfo(filepath);
image = new magickimage(info);
scaled = image.scaleimage(width, height);// 小圖片檔案的大小.
scaled.setfilename(rootpath+topath);
scaled.writeimage(info);
} catch (exception e) {
e.printstacktrace();
} finally {
if(image!=null)
{
image.destroyimages();
}
if (scaled != null) {
scaled.destroyimages();
}
}
}
public static void main(string[] args) {
createimage("d:1012.jpg", "d:www.111cn.net_th.jpg", 110,100);
// system.out.println(isupdatebigpic("d:www.111cn.net11.jpg"));
}
}
imagemagick是一套功能強大、穩定而且免費的工具集和開發包,可以用來讀、寫和處理超過89種基本格式的圖片檔案,包括流行的tiff, jpeg, gif, png, pdf以及photocd等格式。利用imagemagick,你可以根據web應用程式的需要動態產生圖片, 還可以對一個(或一組)圖片進行改變大小、旋轉、銳利化、減色或增加特效等操作,並將操作的結果以相同格式或其它格式儲存。對圖片的操作,即可以通過命令列進行,也可以用c/c++、perl、java、php教程、python或ruby編程來完成。同時imagemagick提供了一個高品質的2d工具包,部分支援svg。現在,imagemagic的主要精力集中在效能、減少bug以及提供穩定的api和abi上