第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android位圖到Base64字符串

Android位圖到Base64字符串

一只斗牛犬 2019-12-12 14:10:32
如何將大的位圖(用手機的相機拍攝的照片)轉(zhuǎn)換為Base64字符串?
查看完整描述

2 回答

?
瀟瀟雨雨

TA貢獻1833條經(jīng)驗 獲得超4個贊

您將圖像的所有字節(jié)加載到字節(jié)數(shù)組中,這很可能會使應用程序在低端設備中崩潰。相反,我首先將圖像寫入文件并使用Apache的Base64InputStream類讀取它。然后,您可以直接從該文件的InputStream創(chuàng)建Base64字符串。它看起來像這樣:


//Don't forget the manifest permission to write files

final FileOutputStream fos = new FileOutputStream(yourFileHere); 

bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);


fos.close();


final InputStream is = new Base64InputStream( new FileInputStream(yourFileHere) );


//Now that we have the InputStream, we can read it and put it into the String

final StringWriter writer = new StringWriter();

IOUtils.copy(is , writer, encoding);

final String yourBase64String = writer.toString();

如您所見,以上解決方案直接與流一起使用,從而避免了將所有字節(jié)加載到變量中的需要,因此使內(nèi)存占用空間降低了,并且在低端設備中崩潰的可能性較小。仍然存在一個問題,那就是將Base64字符串本身放入String變量中并不是一個好主意,因為它再次可能會導致OutOfMemory錯誤。但是至少我們通過消除字節(jié)數(shù)組將內(nèi)存消耗減少了一半。


如果要跳過寫入文件的步驟,則必須將OutputStream轉(zhuǎn)換為InputStream,這并不是那么簡單(必須使用PipedInputStream,但這要復雜一些,因為兩個流必須始終處于不同的線程中)。



查看完整回答
反對 回復 2019-12-13
  • 2 回答
  • 0 關注
  • 409 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號