Tip:据说淘宝使用此软件进行图片压缩
前提条件
- 下载GraphicsMagick
- 添加Im4Java依赖
<dependency>
<groupId>org.im4java</groupId>
<artifactId>im4java</artifactId>
<version>1.4.0</version>
</dependency>
实现
public static void compress(String graphicsMagickHome,String sourcePath, String targetPath, double quality) throws InterruptedException, IOException, IM4JavaException {
GMOperation op = new GMOperation();
//待处理图片的绝对路径
op.addImage(sourcePath);
//图片压缩比,有效值范围是0.0-100.0,数值越大,缩略图越清晰 s
op.quality(quality);
//width 和height可以是原图的尺寸,也可以是按比例处理后的尺寸
// op.addRawArgs("-resize", "100");
//宽高都为100
//op.addRawArgs("-resize", "100x100");
op.addRawArgs("-gravity", "center");
//op.resize(100, null);
//处理后图片的绝对路径
File smallFile = new File(targetPath);
if (!smallFile.getParentFile().exists()) {
smallFile.mkdir();
}
op.addImage(targetPath);
// 如果使用ImageMagick,设为false,使用GraphicsMagick,就设为true,默认为false
ConvertCmd convert = new ConvertCmd(true);
String osName = System.getProperty("os.name").toLowerCase();
if (osName.contains("win")) {
//linux下不要设置此值,不然会报错
convert.setSearchPath(graphicsMagickHome);
}
convert.run(op);
}
说明
- graphicsMagickHome:GraphicsMagick的home目录,只有windows下需要,linux不需要,传null即可
- sourcePath: 图像源绝对路径
- targetPath: 生成图像的目标绝对路径
- quality:生成图片的质量,0-100.0,根据实际情况自己设定