【发布时间】:2015-11-25 17:26:06
【问题描述】:
我正在尝试将图像保存到数据库并在 UI 上检索和显示它们。
我正在使用以下代码将单击/从图库中的图像上传到 My SQL。
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Bitmap photo = null;
if (requestCode == CAMERA_REQUEST && resultCode == getActivity().RESULT_OK) {
photo = (Bitmap) data.getExtras().get("data");
// imageView.setImageBitmap(photo);
}else if(requestCode == GALLERY_REQUEST && resultCode == getActivity().RESULT_OK) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getActivity().getContentResolver().query(
selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
photo = BitmapFactory.decodeFile(filePath);
}
}
下面的代码上传到db。
void createParam(){
photo.compress(Bitmap.CompressFormat.PNG, 100, byteArrayBitmapStream);
byte[] b = byteArrayBitmapStream.toByteArray();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
params.add(new BasicNameValuePair("image", encodedImage));
}
这段代码用于解码从 db 检索到的图像字符串。
public Bitmap getImage() {
if("null".equalsIgnoreCase(image)){
return null;
}else{
byte[] decodedString = Base64.decode(image, Base64.NO_WRAP);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
return decodedByte;
}
}
问题是方法中的 decodeByteArray 返回 null。并且字符串没有被解码。前置摄像头点击的图像不会发生此问题。 请帮我找出问题!
【问题讨论】:
-
'Base64.DEFAULT);'。不匹配 'Base64.NO_WRAP);'。
-
greenapps 我尝试制作两个 no_wrap。但这并没有帮助。我不断得到这个:D/skia:---解码器->解码返回错误
-
将两者设为默认值。剩下的我想知道你的数据库在哪里,因为两者都是java代码。请告诉您在哪里进行编码以及在哪里进行解码。
-
我也尝试将它们都设为“默认”,但这不起作用。 DB 没有问题,因为它适用于某些点击,而不适用于某些点击。
-
你没有回答我所有的问题。
标签: android image bitmap base64 android-camera