【问题标题】:Decoding ByteArrray to display Bitmap into ImageView Android解码 ByteArray 以将 Bitmap 显示为 ImageView Android
【发布时间】:2016-10-27 05:00:49
【问题描述】:

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

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

PHP 代码:

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

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

插入图像的代码

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

SQLite 中此字段的 WHERE 数据类型也为 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"

【问题讨论】:

    标签: php android image sqlite bitmap


    【解决方案1】:

    试试这个:

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

    更新(如果你先在数据库中保存字符串):

    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 数据类型字段中, 保存前,将 String 转换为 byte[],如:

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

    【讨论】:

    • 所有图片只存储在MySql数据库中。
    • 我尝试在 SQLite 中将 base64 保存为字符串,但仍然有少数图像没有显示。
    猜你喜欢
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多