如何将存储在数据库中的图像作为字符串显示到真实图像?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将存储在数据库中的图像作为字符串显示到真实图像?相关的知识,希望对你有一定的参考价值。

如何检索存储在我的数据库中的图像作为真实图像,我已经使用两种不同的方法从数据库中获取图像,但没有一个适合我。

我有这个类,我正试图从listview中检索数据库中的图像。

在编译项目时,我收到以下内容:

resolveUri在坏位图uri上失败了

这是我的课程之一:

public class ListProp extends ListActivity {

private static final String TAG = ListProp.class.getSimpleName();
private static final String TAG_PHOTOS = "photoThumbnailUrl";
private SQLiteDatabase database;
private CursorAdapter dataSource;
Cursor cursor;
private static final String fields[] = { "photoThumbnailUrl",
        BaseColumns._ID };

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    DBHelper helper = new DBHelper(this);
    database = helper.getReadableDatabase();
    database = helper.getWritableDatabase();
    Cursor data = database.query(DBHelper.TABLE, fields, null, null, null,
            null, null);

    dataSource = new SimpleCursorAdapter(this, R.layout.image, data,
            fields, new int[] { R.id.image1 });

    setListAdapter(dataSource);
    System.out.println(dataSource);
    database.close();

    // selecting single ListView item
    final ListView lv = getListView();

    // Launching new screen on Selecting Single ListItem
    lv.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            System.out.println("I'm fine here");

            ImageView image = (ImageView) findViewById(R.id.image1);

            // get it as a ByteArray
            while (cursor.moveToFirst())
                ;
            byte[] imageByteArray = cursor.getBlob(cursor
                    .getColumnIndex(DBHelper.C_PHOTOS));

            // convert it back to an image
            ByteArrayInputStream imageStream = new    
                            ByteArrayInputStream(imageByteArray);
            Bitmap bitmap = BitmapFactory.decodeStream(imageStream);
            Drawable d = new BitmapDrawable(bitmap);
            image.setImageResource(R.drawable.ic_launcher);
            cursor.close();
            lv.addView(image);

        }

    });

}

}

答案

请尝试以下教程:http://www.tutorialforandroid.com/2009/10/how-to-insert-image-data-to-sqlite.html

您将不得不使用BitmapFactory函数decodeByArray:

.setImageBitmap(BitmapFactory.decodeByteArray

希望这可以帮助

以上是关于如何将存储在数据库中的图像作为字符串显示到真实图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Firebase 数据库中存储的 url 作为 UIImageView 中的图像

如何调整我的模型以将上传的图像存储到我的数据库作为图像的链接而不是显示为 blob?

将存储在数据库中的 BLOB 转换为 HTML 网站上的图像

如何将图像从 Firebase 存储显示到小部件中?

数据库或项目文件夹中的图像作为资源

如何使用 C# 和 SQL 将存储在数据库中的图像加载到图片框对象中