導航:首頁 > 文件處理 > im4java壓縮圖片

im4java壓縮圖片

發布時間:2025-02-02 08:07:14

㈠ graphicsmagick在java中怎麼使用

伺服器端圖片上傳邏輯改版,將文件自己壓縮成3份然後上傳至某雲進行存儲。
選擇GraphicsMagick+IM4Java,放棄並發能力弱的ImageMagick+Jmagick。
網上可供學習GraphicsMagick與IM4Java的資料是在太少,翻來覆去就那麼幾篇,碰到異常只能一遍又一遍的研讀官方文檔!這也是我寫這篇文章的原因之一。
im4java參考資料:
1)請詳見Developer's Guide: http://im4java.sourceforge.net/docs/dev-guide.html

2)github上im4java的源碼:https://github.com/Widen/im4java

GraphicsMagick參考資料:
1)http://www.graphicsmagick.org

先在本地安裝使用測試,覺得性能還OK的話,再放到測試伺服器上部署測試實際性能。本地環境是win,win下的GM(GraphicsMagick)就很好安裝了,與普通軟體安裝無異。
二)使用IM4Java:
瞧Developer's Guide中的「Before you begin: Setting up the Environment」內容,大意是使用之前先設置工具的工具(當然壓縮圖片的工具,名字叫gm)的搜索路徑,並說明了這幾種設置方式的差別。
比如win下的安裝路徑,假如我安裝的路徑是D:\GraphicsMagick-1.3.19-Q16,則代碼為:
String myPath="D:\\GraphicsMagick-1.3.19-Q16";

ProcessStarter.setGlobalSearchPath(myPath);

註:我們不能在linux伺服器中這么寫代碼,linux直接就設置環境變數:export PATH=$PATH:/abc...,其中/abc是你的GM工具所在路徑,比如我的是/home/db/roderickyu/soft/bin

簡單用法就直接看文檔吧,我這里寫幾個文檔里不太容易讀出來的內容:
壓縮時可以直接添加本地的圖片,比如:
IMOperation op = new IMOperation();
op.addImage("D:\\test.jpg"); // 輸入要壓縮的文件路徑
op.resize(640); // 多番嘗試後才知道這是限定width,height等比縮放
op.addImage("D:\\newTest.jpg"); // 壓縮後的文件的輸出路徑,當然可以沒有擴展名!

還有一種是對輸入流進行壓縮,比如官方文檔中:
IMOperation op = new IMOperation();
op.addImage("-"); // read from stdin
op.addImage("tif:-"); // write to stdout in tif-format
代碼中tif是指按照tif格式進行壓縮,但是變化不明顯(而且壓縮後的大小與size大小不成正比),很容易給初學者造成是不是代碼不好使的挫敗感!將tif換成jpg壓縮的大小變化就明顯了。這是一個坑!

回到這個需求來,我們只有一個輸入流,怎麼把這個輸入流壓縮成3份大小不等的文件呢?
將輸入流轉化成byte數組,就不存在流被第一個文件讀完第二三的文件沒有流可以讀時報異常。。。empty input file...
代碼為:
InputStream fileStream = ......
int total = fileStream.available();
byte[] bs = new byte[total];
fileStream.read(bs);

按照GM的官方文檔安裝GM時失敗,後才得解:安裝路徑不是當前linux用戶的可讀寫許可權內的路徑,換成當前身份可讀寫的路徑唄或者換登入身份唄~
最後測試,發現性能相當優異!

閱讀全文

與im4java壓縮圖片相關的資料

熱點內容
電腦必備的五個神仙軟體程序員 瀏覽:212
什麼系統屬於安卓 瀏覽:359
有什麼游戲安卓oppo可以玩 瀏覽:721
microchip編程 瀏覽:872
數控車床宏程序編程入門 瀏覽:651
如何查伺服器上的密碼 瀏覽:874
手機alipay文件夾刪除 瀏覽:801
浩辰cad命令行 瀏覽:351
移動加密思路 瀏覽:970
php手冊pdf 瀏覽:752
安卓手機推薦什麼鍵位 瀏覽:112
android登錄驗證碼 瀏覽:476
聯通雲伺服器管理賬號 瀏覽:309
蘋果7加密晶元壞了 瀏覽:516
壓縮包2g解壓後有多大 瀏覽:956
php人才管理系統 瀏覽:21
宏命令結構 瀏覽:900
為什麼安卓手機開淘寶會卡 瀏覽:938
啟迪人生編程教程 瀏覽:296
intouch正在編譯無法打開 瀏覽:837