ImageMagick和im4java
来源:互联网 发布:防抄袭软件 编辑:程序博客网 时间:2024/05/29 06:48
原文:http://www.juziku.com/sunlightcs/wiki/2104.htm
ImageMagick和im4java处理图片,im4java是ImageMagick的一个Java开源接口,使用起来非常方便。
很多网站都会用到对图片的一些处理,包括图片的裁剪、给图片加水印、按比例缩放图片等操作,用ImageMagick实现这些功能,性能非常好,图片还不会失真,聚资库网站,上传图片的时候,就是用的这个实现的。
首先要安装ImageMagick这个工具,安装好这个工具后,再下载im4java包放到项目lib目录里就行了。
注意:如果命令放到CMD中去执行正确,但是在JAVA代码中却执行不了,例如报错说:找不到indentfy这个命令。那么错误可能是你没有设置你工具的路径。
例如:
目的:这个命令是为了获取传入图片的高和宽。
结果:600x480
环境:linux。
需要加的命令:
ProcessStarter.setGlobalSearchPath(globalSearchPath);
/** * Executes the Image Magick Identify command with format of Width x Height * * @param imagePath * String * @return String format of Image's Width x Height */public static String findImageSize(String imagePath,long companyId,long siteId) {imagePath = imagePath.replaceAll("//", "/");String response = null;try {IdentifyCmd cmd = new IdentifyCmd();ArrayListOutputConsumer output = new ArrayListOutputConsumer(); cmd.setOutputConsumer(output); IMOperation imOperation = new IMOperation();imOperation.format("%[fx:w]x%[fx:h]");imOperation.addImage(imagePath);/*ProcessTask p = cmd.getProcessTask(imOperation);p.getProcessStarter().getSearchPath();*/String globalSearchPath = ImageToolUtil.getGlobalSearchPath(companyId,siteId);ProcessStarter.setGlobalSearchPath(globalSearchPath);cmd.run(imOperation);ArrayList<String> cmdOutput = output.getOutput(); response = cmdOutput.get(0); } catch (Exception e) {_log.error(e);} return response;}
下面是通过im4java调用ImageMagick工具处理图片的代码:
/** * * ImageMagick和im4java处理图片 * * @author sunlightcs * * 2011-6-1 * * http://hi.juziku.com/sunlightcs/ */public class ImageTools {/** * * ImageMagick的路径 */// public static String imageMagickPath = null;static {/** * * 获取ImageMagick的路径 */// Properties prop = new PropertiesFile().getPropertiesFile();// linux下不要设置此值,不然会报错// imageMagickPath = prop.getProperty("imageMagickPath");}/** * * 根据坐标裁剪图片 * * @param srcPath 要裁剪图片的路径 * @param newPath 裁剪图片后的路径 * @param x 起始横坐标 * @param y 起始挫坐标 * @param x1 结束横坐标 * @param y1 结束挫坐标 */public static void cutImage(String srcPath, String newPath, int x, int y, int x1,int y1) throws Exception {int width = x1 - x;int height = y1 - y;IMOperation op = new IMOperation();op.addImage(srcPath);/** * width: 裁剪的宽度 * height:裁剪的高度 * x: 裁剪的横坐标 * y: 裁剪的挫坐标 */op.crop(width, height, x, y);op.addImage(newPath);ConvertCmd convert = new ConvertCmd();// linux下不要设置此值,不然会报错// convert.setSearchPath(imageMagickPath);convert.run(op);}/** * * 根据尺寸缩放图片 * @param width 缩放后的图片宽度 * @param height 缩放后的图片高度 * @param srcPath 源图片路径 * @param newPath 缩放后图片的路径 */public static void cutImage(int width, int height, String srcPath,String newPath) throws Exception {IMOperation op = new IMOperation();op.addImage(srcPath);op.resize(width, height);op.addImage(newPath);ConvertCmd convert = new ConvertCmd();// linux下不要设置此值,不然会报错// convert.setSearchPath(imageMagickPath);convert.run(op);}/** * 根据宽度缩放图片 * * @param width 缩放后的图片宽度 * @param srcPath 源图片路径 * @param newPath 缩放后图片的路径 */public static void cutImage(int width, String srcPath, String newPath)throws Exception {IMOperation op = new IMOperation();op.addImage(srcPath);op.resize(width, null);op.addImage(newPath);ConvertCmd convert = new ConvertCmd();// linux下不要设置此值,不然会报错// convert.setSearchPath(imageMagickPath);convert.run(op);}/** * 给图片加水印 * @param srcPath 源图片路径 */public static void addImgText(String srcPath) throws Exception {IMOperation op = new IMOperation();op.font("宋体").gravity("southeast").pointsize(18).fill("#BCBFC8").draw("text 5,5 juziku.com");op.addImage();op.addImage();ConvertCmd convert = new ConvertCmd();// linux下不要设置此值,不然会报错// convert.setSearchPath(imageMagickPath);convert.run(op, srcPath, srcPath);}public static void main(String[] args) throws Exception {// cutImage("D:\\apple870.jpg", "D:\\apple870eee.jpg", 98, 48, 370,// 320);// cutImage(200,300, "/home/steven/a.jpg", "/home/steven/aa.jpg");addImgText("//home//steven//a.jpg");}}
- ImageMagick和im4java
- ImageMagick和im4java处理图片
- Im4java Imagemagick Graphicsmagick备忘
- im4java+ImageMagick/GraphicsMagick
- im4java+ImageMagick+GraphicsMagick
- 关于最近使用imageMagick的Jmagick和im4java
- im4java-ImageMagick图片压缩处理
- ImageMagick使用for java(im4java)
- ImageMagick使用for java(im4java)
- ImageMagick使用for java(im4java)
- ImageMagick使用for java(im4java)
- imageMagick+im4java给图片打水印
- ImageMagick使用for java(im4java)
- 网页图片优化 ImageMagick + im4java + nginx
- im4java
- im4java学习----查看文档和test用例
- GraphicsMagick和im4java按比例压缩图片
- 使用 Grapicmagick 和 Im4java 处理图片
- RHEL/CentOS 5.5下编译安装Fcitx(小企鹅输入法)
- im4java
- 中国已成为亚太区企业首选的外包基地
- Extjs的FormPanel从后台load json数据的要点
- (二)现代软件神话
- ImageMagick和im4java
- 140种标准颜色的宏定义
- 最近写飞秋程序的一些总结
- SVN合并(merge)的使用
- http协议一些记录
- java做的比较完善的FTP上传下载文件服务器源码
- 模板页的JS和CSS路径在内容页加载问题。
- JavaScript的数据类型
- 四类房奴提前还贷不值得 五种还贷方式任选