im4java 处理图片
jopen
11年前
- windows下安装imagemagick
- im4java下载地址:http://sourceforge.net/projects/im4java/files/im4java-1.4.0/im4java-1.4.0-bin.tar.bz2/download
操作完上面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(); } } <!-- lang: java --> /** * * 根据坐标裁剪图片 * * @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); } <!-- lang: java --> /** * 给图片加水印 * @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); }