可能我在重复同样的问题,但我还没有找到解决这个问题的方法&许多同样的问题仍然没有答案。所以,这是我的问题:
我已经实现了PHP后端,用户可以上传任何图像格式的图片&它将以BLOB形式保存在MySQl数据库中。为了在Android设备上检索这些图像,我准备了JSON响应,其中这些图像是base64字符串的形式。
PHP代码:$rightScrollImage= base64_encode($row['right_image']);
现在,在Android端,这些图像将保存在SQLite数据库&这里是
插入图像的代码:
rightScrollImage.setRightimagedata(Base64.decode(row.getString("rightScrollerImage"), 0));
WHERE字段在SQLite中的数据类型也是BLOB。
显示图像的代码:
byte[] imageData = cursor.getBlob(cursor.getColumnIndex(DatabaseManager.RIGHT_IMAGE));
Bitmap bitmap = BitmapFactory.decodeByteArray(imageData, 0, imageData.length);
imageStream.reset();
holder.imageView.setImageBitmap(bitmap);
这个代码的问题是它可以解码很少的图像&未显示的报错"D/skia:——decoder->decode returned false"
试试这个:
String rightScrollerImage = urlFromItsComing();
byte[] image= Base64.decode(rightScrollerImage, Base64.DEFAULT);
Bitmap = bmpImage = BitmapFactory.decodeByteArray(image, 0, image.length);
someImageView.setImageBitmap(bmpImage);
更新(如果您在db中首先保存字符串):
SaveInColumnWith_String_Datatype(rightScrollerImage);
String image_data = cursor.getString(cursor.getColumnIndex(DBData.ColumnName));
byte[] image= Base64.decode(image_data, Base64.DEFAULT);
Bitmap = bmpImage = BitmapFactory.decodeByteArray(image, 0, image.length);
someImageView.setImageBitmap(bmpImage);
如果您保存在BLOB数据类型字段,在保存之前,将字符串转换为字节[],如:
byte[] image_byte_data = Base64.decode(imageDataString, Base64.DEFAULT);
SaveInColumnWith_BLOB_Datatype(image_byte_data);
byte[] image_data = cursor.getBlob(cursor.getColumnIndex(DBData.ColumnName));
Bitmap = bmpImage = BitmapFactory.decodeByteArray(image_data, 0, image.length);
someImageView.setImageBitmap(bmpImage);