当前位置:首页 > Windows程序 > 正文

String command = "cmd /c magick -quality 75% E:/1.jpg E:/2.

2024-03-31 Windows程序

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
老版本是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的使用

引入依赖

<dependency> <groupId>org.im4java</groupId> <artifactId>im4java</artifactId> <version>1.4.0</version> </dependency>

压缩图片的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)");

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/35487.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494590访问次数
  • 建站天数
  • 友情链接