调用imagick做图片等比例压缩5M到100kb

Posted 呆萌小码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用imagick做图片等比例压缩5M到100kb相关的知识,希望对你有一定的参考价值。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.im4java.core.ConvertCmd;
import org.im4java.core.IM4JavaException;
import org.im4java.core.IMOperation;

public class IMagickUtils {
	
	public static File IMCompress(String IMPath,File file){
		if(file.length()<1024*516L){ // 比0.5M大的图片压缩处理,否则直接使用
			return file;
		}
		int width = 800;
		int height = 600;
		try {
			SimpleImageInfo imageInfo = new SimpleImageInfo(new FileInputStream(file));
			width = imageInfo.getWidth();
			height = imageInfo.getHeight();
		} catch (IOException e1) {
			System.out.println("获取图片宽高失败,Imagickutils.java");
		}
		if(width>800){ // 按比例压缩图片大小,宽度最大为800
			 height = (int) (800.0*height/width);
			 width = 800;
		}
		String size = width+"x"+height+"!";
		String filePath = file.getAbsolutePath();
		
		IMOperation operation = new IMOperation();
		operation.addImage(filePath);
		operation.addRawArgs("-thumbnail", size);
		operation.addRawArgs("-quality", "80%");
		operation.addRawArgs("-units", "pixelsperinch");
		operation.addRawArgs("-density", "96");
		operation.addRawArgs("-colorspace","RGB"); // 转成RGB系 避免CMYK模式下的imageIO水印异常
		operation.addRawArgs("-strip");
		operation.addImage(filePath);

		ConvertCmd cmd = new ConvertCmd();
		cmd.setSearchPath(IMPath);  //Windows需要设置,Linux不需要
		try {
			cmd.run(operation);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return file;
	}

	public static void main(String[] args) throws IOException, InterruptedException, IM4JavaException {
		String impath = "D:\\Program Files\\ImageMagick-7.0.7-Q16";
		File file = new File("C:\\Users\\lenovo\\Downloads\\33.jpg");
		file = IMCompress(impath, file);
	}

}

  

以上是关于调用imagick做图片等比例压缩5M到100kb的主要内容,如果未能解决你的问题,请参考以下文章

Java实现的上传并压缩图片功能可等比例压缩或原尺寸压缩

png图片怎么通过代码实现压缩到指定的文件大小,比如5M压缩到200KB,比如用pngquant或imageMagick

js控制图片onload 批量设置内容下所有图片的等比例压缩

Python等比例压缩与质量处理图片

处理页面载入图片js(等比例压缩图片)

Python等比例压缩与质量处理图片