引入maven
Im4java的当前最新版本是1.4.0
<dependency>
<groupId>org.im4java</groupId>
<artifactId>im4java</artifactId>
<version>1.4.0</version>
</dependency>
工具类
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import org.im4java.core.CompositeCmd;
import org.im4java.core.ConvertCmd;
import org.im4java.core.IMOperation;
import org.im4java.core.IdentifyCmd;
import org.im4java.core.ImageCommand;
import org.im4java.process.ArrayListOutputConsumer;
public class Im4JavaUtils {
private static final String IMAGE_MAGICK_PATH = "D:\\Program Files\\ImageMagick-7.0.8-Q16";//ImageMagick安装路径
enum CommandType{
convert("转换处理"),composite("图片合成"),identify("图片信息"),;
private String name;
CommandType(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
private static ImageCommand getImageCommand(CommandType command) {
ImageCommand cmd = null;
switch (command) {
case convert:
cmd = new ConvertCmd();
break;
case composite:
cmd = new CompositeCmd();
break;
case identify:
cmd = new IdentifyCmd();
break;
}
if (cmd != null) {
cmd.setSearchPath(IMAGE_MAGICK_PATH);
}
return cmd;
}
/**
* 生成1.缩略图 2.补白 3.加边
* @param srcImagePath 源图路径
* @param newImagePath 新图路径
* @param width 新图宽
* @param hight 新图高
* @return
*/
public static boolean convertYcThumbImage(String srcImagePath, String newImagePath,int width,int hight) {
try {
IMOperation op = new IMOperation();
op.addImage(srcImagePath);
op.thumbnail(width, hight)//生成的缩略图宽高
.gravity("center").extent(width,hight)//补白的宽高(两个使用同一个变量是因为图片缩放后不一定是你需要的宽高,补白相当于背景图缩放后的图片会在背景图中间)
.background("#ffffff")//背景色
.border(1)//边框
.bordercolor("#666666");//边框色
op.addImage(newImagePath);
ImageCommand convert = getImageCommand(CommandType.convert);
convert.run(op);
System.out.println("压缩图片成功");
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
}
下面附上两篇参考文章