標籤:down time() trace res 就是 buffere 系統 download 老版本
1.新老版本區別
老版本的ImageMagick,使用的是convert.exe。
新版本使用的是magick.exe.
區別就是在使用的時候,命令不一樣
convert -quality 75% D:/1.jpg E:/1.jpgmagick -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的使用
引入依賴
<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)");
ImageMagick 在windows上的使用