Android图片上传SQLite并显示在控件上遇到的问题

图片在数据库表中定义的是Blob类型,但是查找的时候显示为byte[]不能定义,不知道是怎么回事,求指导🙏🏻

参考:https://blog.csdn.net/yihuliunian/article/details/104814035/

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    我来回答一下这个问题:

    1. 我使用Java编写Android应用程序。
    2. 在将图片上传到SQLite数据库时,我将图片转换为字节数组,然后将其作为Blob类型存储在数据库中。
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
    byte[] data = baos.toByteArray();
    
    ContentValues values = new ContentValues();
    values.put(MySQLiteHelper.COLUMN_PICTURE, data);
    database.insert(MySQLiteHelper.TABLE_NAME, null, values);
    
    1. 为了查找在数据库表中定义的Blob类型的图片,我使用游标并将Blob类型的columnIndex传递给getBlob()方法。例如:
    Cursor cursor = database.query(MySQLiteHelper.TABLE_NAME, allColumns, null, null, null, null, null);
    cursor.moveToFirst();
    byte[] imageData = cursor.getBlob(cursor.getColumnIndexOrThrow(MySQLiteHelper.COLUMN_PICTURE));
    
    1. 当我查找图片时,它以byte[]数组的形式显示。
    2. 在代码中没有必要对byte[]进行重新定义,因为它已经是byte[]类型。如果需要,可以将其转换为Bitmap或Drawable类型并显示在控件上。例如:
    Bitmap bitmap = BitmapFactory.decodeByteArray(imageData, 0, imageData.length);
    imageView.setImageBitmap(bitmap);
    
    1. 建议检查你在存储和检索图片时是否正确转换了数据类型,以及检查控件是否正确设置了图片显示。同时,应该考虑使用其他开源框架,如Glide或Picasso,它们可以更轻松地处理图片上传和显示,并减少错误的机会。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^