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

熱點內容
macd從入門到精通pdf 瀏覽:865
程序員回北京老家 瀏覽:323
藏族pdf 瀏覽:655
矩形密封圈壓縮量 瀏覽:593
電腦設置ntp時間同步伺服器地址 瀏覽:18
怎麼更有效招聘對日程序員 瀏覽:149
命令號角 瀏覽:275
格力雙轉子壓縮機 瀏覽:614
hp伺服器上的ip地址 瀏覽:560
c語言編程計算100以內的所有素數 瀏覽:624
命令輸入框 瀏覽:892
冰箱壓縮機發燙噪音 瀏覽:85
單片機棧溢出符號 瀏覽:330
命令與征服修改器怎麼用 瀏覽:485
什麼app比較費錢 瀏覽:832
為什麼同一個app的功能不一樣 瀏覽:232
小型工作室用什麼伺服器好 瀏覽:995
程序員的興趣 瀏覽:413
華為伺服器有什麼好 瀏覽:701
程序員和測試之間的關系 瀏覽:945