操作完上面2步,下面就很好操作了。因为im4java是基于imagemagick的commandline进行调用的java接口,不像jmagick那样用java jni调用本地imagemagick的api那么复杂。其实安装imagemagick在任何平台都是一样的安装,在linux下面有rpm包,安装那个包,指定目录就可以了。windows一样,安装并指定安装路径就可以了。下面上代码
public static String FROM = "E:/project/Test/src/com/8301.jpg";
public static String TO = "E:/project/Test/src/com/8301_new.jpg";
public static String IMAGEMAGICK = "D:/Program Files (x86)/ImageMagick-6.8.7-Q16";
/**
* @param args
*/
public static void main(String[] args) {
handlerImage(1000, 1000);
}
public static void handlerImage(int width, int height) {
IMOperation op = new IMOperation();
op.addImage(FROM);
op.resize(width, height);//压缩图片
op.addImage(TO);
ConvertCmd convert = new ConvertCmd();
convert.setSearchPath(IMAGEMAGICK);
try {
convert.run(op);
} catch (IOException | InterruptedException | IM4JavaException e) {
e.printStackTrace();
}
}
/**
*
* 根据坐标裁剪图片
*
* @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 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);
}