Tôi có một máy chủ có nhiều ảnh từ 1,5 kb đến 9 Mb. Ảnh từ PC, máy tính bảng và điện thoại. Máy chủ mã hóa chúng thành chuỗi Base64 và sau đó gửi chúng đến máy khách Android. Một hình ảnh 300 kb trả về null khi giải mã trong BitmapFactory.decodeByteArray ... Nhưng đó là hình ảnh hợp lệ và được giải mã tốt trong bộ giải mã trực tuyến. ?!Android BitmapFactory trả về null trên mảng byte được giải mã Base64
byte[] decodedString = Base64.decode(image64, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, ecodedString.length);
Đối với 2 ngày tôi không thể tìm thấy câu trả lời (
Bất kỳ ý tưởng Nhờ
PS
private boolean decodeImage64(String uid, String image64, String name) {
Bitmap decodedByte;
boolean result = false;
if (image64 != null && !image64.isEmpty()) {
try {
Log.e(TAG, "decodeImage64: image64.getBytes().length = " + image64.getBytes().length);
byte[] decodedString = Base64.decode(image64, Base64.DEFAULT);
Log.e(TAG, "decodeImage64: decodedString = " + decodedString + " , decodedString.length = " + decodedString.length);
decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
Log.e(TAG, "decodeImage64: decodedByte = " + decodedByte);
if (decodedByte != null) {
FileOutputStream out = null;
try {
out = new FileOutputStream(getImageFolderName() + "/" + uid + ".png");
decodedByte.compress(Bitmap.CompressFormat.PNG, 100, out);
decodedByte.recycle();
out.close();
} catch (Exception e) {
Log.e(TAG, Log.getStackTraceString(e));
} finally {
try {
if (out != null) {
out.close();
}
if (decodedByte != null){
decodedByte.recycle();
}
} catch (IOException e) {
Log.e(TAG, Log.getStackTraceString(e));
}
}
result = true;
}else {
Log.e(TAG, " !!!!!!!!!!!!!!!!!!!!!!! decodeImage64: decodedByte = null " + name);
}
}catch (Exception e){
Log.e(TAG, Log.getStackTraceString(e));
}
} else {
Log.e(TAG, "decodeImage64: image = null " + name);
}
return result;
}
Và logcat
hình ảnh tốt:
06-29 02:33:57.465 18197-18584/cps.agrovisio E/myLogs: ------------------------- doInBackground: Good photo
06-29 02:34:13.993 18197-18584/cps.agrovisio E/myLogs: decodeImage64: image64.getBytes().length = 2264744
06-29 02:34:14.085 18197-18584/cps.agrovisio E/myLogs: decodeImage64: decodedString = [[email protected] , decodedString.length = 1676499
06-29 02:34:14.635 18197-18584/cps.agrovisio E/myLogs: decodeImage64: decodedByte = [email protected]
hình ảnh xấu:
06-29 02:33:56.041 18197-18584/сps.agrovisio E/myLogs: ------------------------- doInBackground: Bad photo
06-29 02:33:57.177 18197-18584/cps.agrovisio E/myLogs: decodeImage64: image64.getBytes().length = 372570
06-29 02:33:57.194 18197-18584/cps.agrovisio E/myLogs: decodeImage64: decodedString = [[email protected] , decodedString.length = 275799
06-29 02:33:57.245 18197-18584/cps.agrovisio E/myLogs: decodeImage64: decodedByte = null
điều gì khác biệt với hình ảnh, ngoại trừ kích thước của chúng? – goto
Bạn tôi có thể cho chúng tôi hình ảnh của bạn để dùng thử không? –
Tất cả ảnh jpg. Sự cố từ Android Tablet –