ImageMagick+im4java

废话不多说,直接上代码,
采用im4java压缩图片,并且图片不失真

package com.bcinfo.sns.util;

import org.im4java.core.ConvertCmd;
import org.im4java.core.IMOperation;

public class ImagesUtil {
/**
* ImageMagick的路径
*/
public static String imageMagickPath = null;

static{
/**
* 获取ImageMagick的路径
*/
//linux下不要设置此值,不然会报错
imageMagickPath = "E:\\Program Files\\ImageMagick-6.7.3-Q16";
}


/**
* 根据坐标裁剪图片
*
* @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 zoomImage(Integer width, Integer 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 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 bcinfo.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("c://images//firelily.jpg", "c://images//firelily232.jpg", 98, 48, 300, 300);
//zoomImage(129 ,369, "c://images//ooo.jpg", "c://images//ooo2.jpg");
//addImgText("c://images.src//firelily.jpg");
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GraphicsMagick号称图像处理领域的瑞士军刀。 短小精悍的代码却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取、写入和操作,支持超过88种图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF。 通过使用OpenMP可是利用多线程进行图片处理,增强了通过扩展CPU提高处理能力。 GraphicsMagick可以在绝大多数的平台上使用,Linux、Mac、Windows都没有问题。 GraphicsMagick 支持大图片的处理,并且已经做过GB级别的图像处理实验。GraphicsMagick能够动态的生成图片,特别适用于互联网的应用。可以用来处理调整尺寸、旋转、加亮、颜色调整、增加特效等方面。GaphicsMagick不仅支持命令行的模式,同时也支持C、C++、Perl、PHP、Tcl、 Ruby等的调用。事实上,GraphicsMagick是从 ImageMagick 5.5.2 分支出来的,但是现在他变得更稳定和优秀,下面就是两个之间的一些比较。 GM更有效率(测评),能更快的完成处理工作 GM更小更容易安装 GM已经被Flickr和Etsy使用,每天处理百万计的图片 GM与已经安装的软件不会发生冲突 GM几乎没有安全问题 GM的手册非常丰富 im4javaImageMagick的一个Java开源接口,使用起来非常方便。 很多网站都会用到对图片的一些处理,包括图片的裁剪、给图片加水印、按比例缩放图片等操作,用ImageMagick实现这些功能,性能非常好,图片还不会失真. 本文档详细的介绍了 GraphicsMagick+im4java的搭建过程,对一些搭建过程中出现的问题进行了详细的解答,避免采坑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值