導航:首頁 > 文件處理 > 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壓縮圖片相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:755
蘋果郵件無法連接伺服器地址 瀏覽:958
phpffmpeg轉碼 瀏覽:669
長沙好玩的解壓項目 瀏覽:140
專屬學情分析報告是什麼app 瀏覽:562
php工程部署 瀏覽:831
android全屏透明 瀏覽:730
阿里雲伺服器已開通怎麼辦 瀏覽:801
光遇為什麼登錄時伺服器已滿 瀏覽:300
PDF分析 瀏覽:483
h3c光纖全工半全工設置命令 瀏覽:141
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:682
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:777
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:148
伊克塞爾文檔怎麼進行加密 瀏覽:889
app轉賬是什麼 瀏覽:162