好吧,我已閱讀所有關於此主題的問題和解答。我一直在閱讀他們幾天,沒有爲我工作,所以我有一個直接的問題。此代碼生成一個字符串Android base64解碼/編碼圖像字符串
public String getStringImage(Bitmap bmp){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
input = Base64.encodeToString(imageBytes, Base64.DEFAULT);
return input;
}
而這種代碼生成相同的圖片另一個字符串,
<?php
$data = file_get_contents('Lake_mapourika_NZ.jpeg');
$nova = base64_encode($data);
echo $nova;
?>
當我將其插入到該代碼回用Java:
public void decodeImage()
{
byte[] decodedByte = Base64.decode(input, Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
imageView.setImageBitmap(bitmap);
}
第一個字符串不會工作第二個工作正常。爲什麼?爲什麼Java到Java不工作和PHP到Java工作正常?
當然,字符串是不同的,這也是一個很好的問題。爲什麼它們從相同位圖生成時有所不同?對我來說,似乎Java解碼工作正常,但編碼不會工作。
我使用此代碼發送我的圖片從應用程序到服務器,所以我不能使用在線轉換器每次它必須被編碼爲字符串從應用程序。我沒有得到任何錯誤,並用我的手機相機拍攝的照片,我得到了內存異常。但是,當質量改爲50時,我得到解碼的字符串,但它不會像往常一樣工作。
有沒有其他方法可以做到這一點?
我可以問你爲什麼你在這裏使用base64嗎? – e4c5
而不是獲取圖像的base64字符串,並將它們隱藏顯示,我建議您將圖像的url作爲參考存儲,它使圖像的url直接在imageview上直接顯示圖像更容易。你可以參考這裏http://stackoverflow.com/questions/348363/what-is-the-best-practice-for-storing-uploaded-images –
'input'應該是一個局部變量,'String input = ... '。這並不能解釋錯誤,所以將這些字節保存在一個文件中,看看'compress'是否工作。也許在'?>'後面有一個換行符(通常是錯誤的),那麼java會需要一個明確的換行符''\ r \ n「'。 –