我目前使用ByteArrayOutputStream將BufferedImage轉換爲byte [],然後使用開源類Base64Coder將byte []轉換爲char [],然後將其附加到String。這是編碼視頻幀集並將它們置於XML友好格式的多步驟過程的一部分。不要問我爲什麼要這樣做,那只是需要做的。什麼是Base64編碼圖像最快的Java庫?
我看到Base64編碼佔用整個過程的CPU時間〜75%,並且看到我剛剛從谷歌搜索中抓取這個隨機類,我確信有更高效的編碼圖片。我有什麼選擇傢伙?
我目前使用ByteArrayOutputStream將BufferedImage轉換爲byte [],然後使用開源類Base64Coder將byte []轉換爲char [],然後將其附加到String。這是編碼視頻幀集並將它們置於XML友好格式的多步驟過程的一部分。不要問我爲什麼要這樣做,那只是需要做的。什麼是Base64編碼圖像最快的Java庫?
我看到Base64編碼佔用整個過程的CPU時間〜75%,並且看到我剛剛從谷歌搜索中抓取這個隨機類,我確信有更高效的編碼圖片。我有什麼選擇傢伙?
這是一個很古老的問題,但它仍然在谷歌翻起來排名靠前的一個...
這已經在這裏全面地回答說: http://java-performance.info/base64-encoding-and-decoding-performance/
從那裏以總結:
讓我們總結在一個表中的編解碼器的性能。該表按照所有這些編解碼器的相對性能排序(更快)。
Name Max encoding Max decoding How much we can Supports byte[] -> byte[] len len encode with -Xmx8G Java 8 1.62 G 2 G 1.16 G Yes javax.xml 1.62 G 2 G 1.07 G No MiGBase64 1.62 G 0.36 G 1.07 G Yes IHarder 1.62 G 0.72 G 1.23 G Yes Apache 0.81 G 0.72 G 0.8 G Yes Guava 1.62 G 2 G 1.07 G No Sun.misc 0.79 G 1.05 G 0.78 G No
如果您正在尋找一種快速可靠的Base64編解碼器 - 不要向JDK外尋找。 Java 8中有一個新的編解碼器:java.util.Base64
,還有一個隱藏在Java 6中的很多人眼中:javax.xml.bind.DatatypeConverter
。兩者都是快速可靠的,不會受到整數溢出的影響。
這裏描述的4個第三方編解碼器中有2個非常快:MiGBase64和IHarder。不幸的是,如果您需要一次處理數百兆字節,只有谷歌Guava將允許您一次解碼2G數據(對於IHarder和Apache Commons,在MiGBase64/720M的情況下爲360MB)。不幸的是,Guava不支持byte [] - > byte []編碼。
不要嘗試調用String.getBytes(字符集)上巨大的字符串,如果你的字符集是多字節一個 - 你可能會得到整數溢出有關的異常的全部灰階。
嘗試commons-codec
庫在http://commons.apache.org/codec/ 絕對讓我們知道結果。這是一個標準和廣泛使用的庫。
你正在尋找的類是org.apache.commons.codec.binary.Base64
http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Base64.html
比什麼效率更高?給算法,或者我們不能告訴你你可以改進什麼。 –
看看這裏:http://stackoverflow.com/questions/469695/decode-base64-data-in-java 有點類似... –
我已經告訴過你的課,Base64Coder,它是第一個結果谷歌搜索...... – Marty