解码ByteArrray以将位图显示到ImageView Android中

时间:2016-10-27 05:00:49

标签: php android image sqlite bitmap

我可能会重复同样的问题,但我还没有找到解决这个问题的方法。许多相同的问题仍然没有得到答案。所以,这是我的问题:

我已经实现了PHP后端,用户可以以任何图像格式上传图片。它将在MySQl数据库中保存为BLOB。要在Android设备上检索这些图像,我已准备好JSON响应,其中这些图像采用base64字符串的形式。

PHP代码:

$rightScrollImage= base64_encode($row['right_image']);

现在,在Android端,这些图像将保存在SQLite数据库&这是

插入图片的代码

rightScrollImage.setRightimagedata(Base64.decode(row.getString("rightScrollerImage"), 0));

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返回false"

1 个答案:

答案 0 :(得分:0)

试试这个:

fn main() {
    let z = vec![(1, 2), (3, 4)];
    let sums = z.iter().map(|&(a, b)| a + b);
    //                       ^
    println!("{:?}", sums);
}

更新(如果您在db中首先保存字符串):

String rightScrollerImage = urlFromItsComing();
byte[] image= Base64.decode(rightScrollerImage, Base64.DEFAULT);
Bitmap = bmpImage = BitmapFactory.decodeByteArray(image, 0, image.length);
someImageView.setImageBitmap(bmpImage);

如果要保存BLOB数据类型字段, 在保存之前,将字符串转换为byte [],如:

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);