zoukankan      html  css  js  c++  java
  • 调用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);
    	}
    
    }
    

      

  • 相关阅读:
    jquery获得url的get参数
    WampServer更改或重置数据库密码
    phpexcel乱码问题
    5kcrm增加权限管理中的模块(签到统计)
    windows关于定时执行的php脚本
    php 中引入邮箱服务 , 利用第三方的smtp邮件服务
    thinkphp 多个字段的不同关系的查询条件实现 .
    redis与memcached有什么区别
    MYSQL语句大全
    使用HttpClient工具类发起Restful API调用
  • 原文地址:https://www.cnblogs.com/codeinet/p/8087223.html
Copyright © 2011-2022 走看看