ImageMagick 在windows上的使用

2021-07-16 06:12

阅读:763

1.新老版本区别

老版本的ImageMagick,使用的是convert.exe。
新版本使用的是magick.exe.

区别就是在使用的时候,命令不一样

convert -quality 75%   D:/1.jpg  E:/1.jpg
magick -quality 75%   D:/1.jpg  E:/1.jpg

没有做更多的测试我现在实际用到的是:
新版本现在是7.0.7 http://www.imagemagick.org/script/download.php
老版本是6.2.7 https://pan.baidu.com/s/1gfpPo1X

2.Why???

因为windows系统有同样的一个命令,convert。估计是基于这个考虑,ImageMagick才把convert换成了magick。

3.为什么使用老版本

现在直接使用java通过调用cmd的方式来调用imageMagick,一直没有成功。原因没找到。

String command = "cmd /c magick -quality 75% E:/1.jpg E:/2.jpg"; 
Process p = null;  
Runtime run = Runtime.getRuntime();  

try {  
    p = run.exec(command);  
    System.out.println(command);
    p.waitFor();  
    in = p.getInputStream();  
    BufferedReader read = new BufferedReader(new InputStreamReader(in));  
    String result = read.readLine();  
    System.out.println("INFO:"+result); 
} catch (Exception e) {  
    e.printStackTrace();  
}  

而且,之前在linux里面使用的im4java来调用ImageMagick的,im4java,,,不支持新版本。im4java比较老了,应该是在ImageMagick新版本之前就不更新了,所以im4java和新版本的ImageMagick不兼容。
所以,选择使用老版本 。

4.im4java的使用

引入依赖

org.im4java
    im4java
    1.4.0

压缩图片的java方法

long zoomstart,zoomend;
zoomstart = System.currentTimeMillis();
start = System.currentTimeMillis();
IMOperation operation = new IMOperation();
operation.addImage(orgfileName);
operation.quality(0.1);
operation.addImage(zoomfileName);
ConvertCmd cmd = new ConvertCmd();
cmd.setSearchPath("C:\\Program Files (x86)\\ImageMagick-6.2.7-Q16");  //Windows需要设置,Linux不需要
cmd.run(operation);
zoomend = System.currentTimeMillis();  
System.out.println("生成压缩图片时间 start time:" + zoomstart+ "; end time:" + zoomend+ "; Run Time:" + (zoomend - zoomstart) + "(ms)");


评论


亲,登录后才可以留言!