該應用程序將base64解碼爲PNG,但是當我將文件編碼回base64以發送到服務器時,生成的base64不同並且不會生成圖像。Android編碼PNG到base64字符串產生無效結果
這裏原來的base64字符串的開頭: /9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAYAAIdp
這裏是BASE64的開始是從編碼和PNG文件後: iVBORw0KGgoAAAANSUhEUgAAD8AAAAvQCAIAAABPl1n3AAAAA3NCSVQICAjb4U/gAAAgAElEQVR4nO
這是我的代碼使用的文件進行Base64編碼:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inDither = true;
options.inScaled = false;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inDither = false;
File file = new File(root +"/saved_images/"+note.imageLocation);
if(file.exists()){
// TODO perform some logging or show user feedback
try {
Bitmap myBitmap = BitmapFactory.decodeFile(root +"/saved_images/"+note.imageLocation, options);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
myBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
JSONObject object =new JSONObject();
object.put("image_type", "image/png");
object.put("image_data", Base64.encodeToString(byteArray, Base64.DEFAULT));
if (note.serverID == -1) {
toReturn.put(String.valueOf(i), object);
}else{
toReturn.put(String.valueOf(note.serverID), object);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
i--;
}else{
Log.i("File Not Found", "NoteModel - "+file);
}
'該應用程序將base64解碼爲PNG'。您應該開始向我們顯示該代碼。而且你也沒有說出png的保存位置。你把它保存爲一個文件嗎? – greenapps