利用ImageMagick调用linux系统命令得方式实现了这个需求。所有的操作都在centeros 6.5下进行。
ImageMagick安装
1、确保系统已经安装以下包
可以通过下面的命令进行查看
rpm -qa |grep libjpeg
安装
yum install libjpeg
yum install libjpeg-devel
yum install libpng
yum install libpng-devel
yum install libtiff
yum install libtiff-devel
yum install libungif
yum install libungif-devel
yum install freetype
yum install zlib
2.如果以前安装过,卸载掉ImageMagick:
yum remove ImageMagick
yum install ImageMagick
3.安装完成后检查
convert --version
4.建立个Demo工程
import java.io.BufferedReader;
import java.io.InputStreamReader;
import magick.MagickException;
public class Command {
public static void main(String[] args) throws MagickException {
//调用示例
Command.convertImages("/home/zhx/Desktop/ai.ai", "500", "840", "jpg", "test", "/home/zhx/Desktop");
}
/**
*
* @param filePath 文件路径
* @param width 宽
* @param height 高
* @param genType 生成文件类型即后缀名
* @param genFileName 生成文件名称
* @param genPath 生成文件路径
*/
public static void convertImages(String filePath,String width,String height,String genType,String genFileName,String genPath) {
String commandStr = "convert -resize "+width+"x"+height+" "+filePath+" "+genPath+"/"+genFileName+"."+genType;
System.out.println(commandStr);
BufferedReader br = null;
try {
Process p = Runtime.getRuntime().exec(commandStr);
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
finally
{
if (br != null)
{
try {
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}