1
我有一個像聯繫人contentprovider數據庫,在該用戶可以捕獲每個聯繫人的圖像捕獲後,我編碼的圖像到base64和保存到文件並更新該圖像字段與該文件的路徑,並同步所有聯繫人到服務器,如果用戶在線,以及我從服務器獲取所有這些數據,而我從文件中提取圖像,我面臨的內存異常base64,如果我在數據庫中保存圖像是解決問題的方法嗎?OutOfmemory異常在Android中的Base64在Android
我有一個像聯繫人contentprovider數據庫,在該用戶可以捕獲每個聯繫人的圖像捕獲後,我編碼的圖像到base64和保存到文件並更新該圖像字段與該文件的路徑,並同步所有聯繫人到服務器,如果用戶在線,以及我從服務器獲取所有這些數據,而我從文件中提取圖像,我面臨的內存異常base64,如果我在數據庫中保存圖像是解決問題的方法嗎?OutOfmemory異常在Android中的Base64在Android
在Android中,圖像通常會導致OutOfMemoryException,尤其是當您嘗試編碼整個圖像時。爲此,請在塊中讀取圖像數據,然後在塊上應用編碼後,將塊保存在臨時文件中。當編碼完成,做任何你想要與你的編碼圖像文件做..
下面是從文件編碼圖像,並使用數據塊保存它在一個文件中的代碼..
String imagePath = "Your Image Path";
String encodedImagePath = "Path For New Encoded File";
InputStream aInput;
Base64OutputStream imageOut = null;
try {
aInput = new FileInputStream(imagePath);
// carries the data from input to output :
byte[] bucket = new byte[4 * 1024];
FileOutputStream result = new FileOutputStream(encodedImagePath);
imageOut = new Base64OutputStream(result, Base64.NO_WRAP);
int bytesRead = 0;
while (bytesRead != -1) {
// aInput.read() returns -1, 0, or more :
bytesRead = aInput.read(bucket);
if (bytesRead > 0) {
imageOut.write(bucket, 0, bytesRead);
imageOut.flush();
}
imageOut.flush();
imageOut.close();
} catch (Exception ex) {
Log.e(">>", "error", ex);
}
你應該張貼導致您內存不足的一段代碼。 – dmon