im4java profile_GraphicsMagick+im4java
im4java是ImageMagick的另一個(gè)Java開(kāi)源接口。與JMagick不同之處在于im4java只是生成與ImageMagick相對(duì)應(yīng)的命令行,然后將生成的命令行傳至選中的IM-command(使用java.lang.ProcessBuilder.start()實(shí)現(xiàn))來(lái)執(zhí)行相應(yīng)的操作。它支持大部分ImageMagick命令,可以針對(duì)不同組的圖片多次復(fù)用同一個(gè)命令行。
這篇文章,我就是主要講解im4java。經(jīng)過(guò)測(cè)試,im4java也是能夠高清壓縮圖片,而且它也特別強(qiáng)大,至少一些基本常見(jiàn)的業(yè)務(wù)都是可以完美實(shí)現(xiàn)的。
目前我只寫(xiě)了一個(gè)壓縮方法,當(dāng)然也是參照其他大神的方法改進(jìn)的,以符合自己的業(yè)務(wù)需求。
用im4java,我們需要安裝GraphicsMagick:
GraphicsMagick 是一個(gè)用來(lái)讀寫(xiě)、生成超過(guò)90種圖像格式的工具集合,支持包括 TIFF, JPEG, JPEG-2000,PNG, PDF, PhotoCD, SVG, 和GIF 等圖像格式。GraphicsMagick 是基于ImageMagick開(kāi)發(fā)的。
GraphicsMagick是ImageMagick的一個(gè)分支,相對(duì)于ImageMagick而言,TA處理速度更快,消耗資源更少。
直接下載最新版的GraphicsMagick,安裝即可。
在你的程序里,我們只要調(diào)用im4java壓縮的工具類(lèi)就行。
返回值你可以自定義,一般返回壓縮后的路徑。
附上源碼:
/* 根據(jù)尺寸縮放圖片
*
* @author zhangshengqiang
* @date 2015年5月6日
* @param path
* 源圖路徑
* @param width
* 壓縮后寬度
* @param height
* 壓縮后高度
* @param type
* 1為像素,2為百分比處理,如(像素大小:1024x1024,百分比:50%x50%)
* @return
* @throws Exception
*/
publicstaticString createThumbnail(String path,intwidth, intheight,String type) throwsException {
IMOperation op = newIMOperation();
ConvertCmd cmd = newConvertCmd(true);
String newFileName=null;
//文件名前綴
String prevFileName=null;
try{
op.addImage();
String raw = "";
if("1".equals(type)){
//按像素
raw = width+"x"+height+"!";
prevFileName=width + "x"+ height + "_";
}else{
//按百分比
raw = width+"%x"+height+"%";
prevFileName=width + "%x"+ height + "%_";
}
//壓縮
op.addRawArgs("-thumbnail", raw);
//圖片質(zhì)量
op.addRawArgs("-quality", "100");
op.addImage();
//系統(tǒng)類(lèi)型
String osName = System.getProperty("os.name").toLowerCase();
if(osName.indexOf("win") != -1) {
// linux下不要設(shè)置此值,不然會(huì)報(bào)錯(cuò)
cmd.setSearchPath(DspConfigHolder.getProperty("imageMagickPath"));
}
//讀取配置文件:工程路徑
String filePath = DspConfigHolder.getProjectAbsPath() + path;
String fpath[]=filePath.split("/");
//原圖名稱(chēng)
String oldFileName=fpath[fpath.length-1];
//壓縮圖名稱(chēng)
String fileName=IdCreater.newId()+getImgSuffix(oldFileName);;
//壓縮后的新文件名
newFileName= prevFileName+ fileName;
//新文件路徑
String newfile=filePath.replace(oldFileName, newFileName);
//壓縮
cmd.run(op, filePath, newfile);
} catch(Exception e) {
e.printStackTrace();
thrownewException(MessageUtil.getMessage("thumbnailimage.error"));
}
returnDspConfigHolder.getImgUploadPath()+newFileName;
}
你的 GraphicsMagick安裝路徑:
DspConfigHolder.getProperty("imageMagickPath");//我這里是配置在properties文件中
##image安裝路徑(linux下不需要此項(xiàng))
imageMagickPath=C:\\Program Files\\GraphicsMagick-1.3.18-Q8
好了,以上就是利用 GraphicsMagick+im4java 來(lái)高清壓縮圖片。
我們不再使用jmagick,省卻了配置來(lái)配置去的問(wèn)題。
Im4Java包為: im4java-1.2.0.jar 直接在lib下引用即可
GraphicsMagick的安裝如下:
windows下:
安裝:GraphicsMagick-1.3.12-Q16.zip
并配置GraphicsMagick的安裝路徑:
PMS_File_service里etc下的FileConfig.properties里設(shè)置GRAPHICS_MAGICK_PATH =C:\\Program Files\\GraphicsMagick-1.3.12-Q16
linux下:
安裝:GraphicsMagick-1.3.18.tar.gz
1、 解壓GraphicsMagick-1.3.12.tar.gz包
# tar -xvzf GraphicsMagick-1.3.12.tar.gz
# cd GraphicsMagick-1.3.12
...........
2.接下來(lái)就是安裝
# make
# make install
3.測(cè)試是否安裝成功, 使用命令查看GraphicsMagick所支持的圖片格式:
# gm convert -list formats
.......顯示支持的所有圖片
4.查看gm 的安裝路徑:
# which gm
/usr/local/bin/gm (顯示的安裝路徑)
5、 設(shè)置環(huán)境變量
# vi /etc/profile
在/etc/profile文件的最后添加如下配置:
IM4JAVA_TOOLPATH=/usr/local/bin/gm? (Im4Java包要求,具體參考http://im4java.sourceforge.net/docs/dev-guide.html)
6.設(shè)置授權(quán)
給zxin10用戶(hù)賦graphicsMagick安裝目錄的訪問(wèn)權(quán)限
上述安裝步驟都是在root用戶(hù)下進(jìn)行的,所以在安裝完成之后需要給 zxin10用戶(hù)賦訪問(wèn)權(quán)限,否則在zxin10用戶(hù)下截取圖片,將會(huì)報(bào)錯(cuò)org.im4java.core.CommandException: java.io.IOException: Cannot run program "gm": java.io.IOException: error=13, Permission denied。
使用root用戶(hù)登錄,然后執(zhí)行如下命令:
# chown -R zxin10:users /usr/local/bin/gm
總結(jié)
以上是生活随笔為你收集整理的im4java profile_GraphicsMagick+im4java的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java ee500错误_无法访问页面,
- 下一篇: 梅州有学java的地方吗,梅州java工