2013-02-07 35 views
2

另外,哪種方法(jpeg,png,gif)最適合用於帶寬壓縮?Java - 如何壓縮BufferedImage?

+0

檢查:http://www.ou.edu/class/digitalmedia/articles/CompressionMethods_Gif_Jpeg_PNG.html – Arpit

+0

http://stackoverflow.com/問題/ 8722020 /快速緩衝圖像壓縮 –

回答

0

JPEG最有可能。這是默認的75%壓縮,但質量缺乏。

如果你想質量:使用PNG。你會獲得透明度,這是jpg不支持的。 png的質量也被列爲100%。如果你想要很好的質量,但文件很小,你可以使用png並且使用壓縮類型,類似於文件的base-64。然後解壓縮並存儲圖像。它將使用低存儲量存儲圖像,但可以讓您有效地保持質量不變。

2

壓縮由各種文件格式(JPEG,PNG,GIF等)處理。

「帶寬最好」是一個完全主觀的問題,取決於圖像本身的大小和內容。

例如,具有少量顏色和小「平滑」(例如像素圖形)的小圖像可以很好地處理PNG和GIF格式。使用JPEG時,具有多種顏色和很多平滑處理的較大圖像(例如照片)效果會更好,並且在編碼期間,您還可以控制壓縮/質量。

5

什麼格式的使用方法:

  • JPG/JPEG是lossey壓縮 - 你將失去的細節。 (質量級別是可控的,這有助於)
  • GIF是無損壓縮,但它轉換爲8位顏色空間會扭曲許多圖像,尤其是自然圖像。
  • PNG是無損壓縮。

除非你有令人信服的理由不使用PNG,否則我會推薦它。 More details

使用相同的圖像,但使用不同的格式,圖像質量通常近似與圖像大小相反。我建議使用PNG,如果您的PNG太大,請使用JPEG。 PNG也具有支持透明度的好處。

GIF確實只適用於小型計算機生成的圖像,如圖標或排版。上面的鏈接還包含圖片大小比較。

與往常一樣,最好的測試是嘗試所有的你的申請和比較;但是,對於大多數情況下,PNG是合理的默認值,在這種情況下,這種分析的返回值最小。

創建JPEG,PNG或GIF:

至於實際上從Java BufferedImage創建JPEG,PNG或GIF。查看Sun/Oracle的this tutorial。有很多內容可以幫助你,並且last section明確地解決了創建JPEG,PNG和GIF的問題。這裏是一個修改剪斷,它從上面的鏈接教程:

try { 
    BufferedImage bufImg = getBufferedImage(); //get BufferedImage from your code... 
    File fout = new File("saved.png"); 
    ImageIO.write(bufImg, "png", fout); 
} catch (IOException e) { 
    //handle exception... 
} 
+1

但是,我如何將它壓縮在第一位呢? – llamositopia

+1

編輯解決您的問題:) – voidlogic