如何从API加载图像并将其保存到sqlite数据库中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从API加载图像并将其保存到sqlite数据库中?相关的知识,希望对你有一定的参考价值。

我已经将图像放入回收视图。所有其他详细信息都保存到sqlite数据库中。但是保存图像存在问题。

这是我的数据库表和将详细信息保存到数据库中的方法

val CREATE_TABLE = "CREATE TABLE $TABLE_NAME " + "($ID INTEGER PRIMARY KEY, $BOOK_NAME TEXT, $DESCRIPTION TEXT, $AUTHOR TEXT, $COVER_PAGE BLOB, $ISBN TEXT, $LANGUAGE TEXT, $NUMBER_OF_PAGES INTEGER, $PRICE TEXT, $CATEGORY TEXT)" db?.execSQL(CREATE_TABLE)

fun addFavouriteBooks(
        id: Int,
        bookName: String,
        description: String,
        author: String,
        cover: ByteArray,
        isbn: String,
        language: String,
        numbOfPages: Int,
        price: String,
        category: String
    ): Long 
        val db = this.writableDatabase
        val contentValues = ContentValues()
        contentValues.put(ID, id)
        contentValues.put(BOOK_NAME, bookName)
        contentValues.put(DESCRIPTION, description)
        contentValues.put(AUTHOR, author)
        contentValues.put(COVER_PAGE, cover)
        contentValues.put(ISBN, isbn)
        contentValues.put(LANGUAGE, language)
        contentValues.put(NUMBER_OF_PAGES, numbOfPages)
        contentValues.put(PRICE, price)
        contentValues.put(CATEGORY, category)

        val res = db.insert(TABLE_NAME, null, contentValues)
        db.close()
        return res
    

这是我在回收站适配器中的功能,用于在回收站视图中捕获数据并将其发送到sqlite数据库。我不知道像其他细节一样发送图像。


        holder.like.setOnClickListener 
            var c_id = holder.id
            var c_name = holder.name.text.toString()
            var c_description = holder.description
            var c_author = holder.author.text.toString()
            var c_cover = holder.cover.toString()

            //i want to convert this c_cover into byte array

            var c_isbn = holder.isbn
            var c_lang = holder.language
            var c_numberOfPages: Int = holder.numbOfPages.toInt()
            var c_price = holder.price.text.toString()
            var c_category = holder.category

            var favList: Long = dbHelper.addFavouriteBooks(c_id.toInt(), c_name, c_description, c_author,c_cover, c_isbn, c_lang, c_numberOfPages, c_price, c_category)

            if(favList > 0)
            
                Toast.makeText(context, "Book added to favourites", Toast.LENGTH_SHORT).show()
            
        
答案

这是我们在Java中的操作方式。

byte[] Imagebyte = getBitmapAsByteArray(((BitmapDrawable) YOUR_IMAGEVIEW.getDrawable()).getBitmap());

然后,将其存储在数据类型为BLOB的FIELD的sqlite中。

以上是关于如何从API加载图像并将其保存到sqlite数据库中?的主要内容,如果未能解决你的问题,请参考以下文章

Android 从 Sqlite 数据库保存和获取图像

Laravel:如何通过 API postman 上传图像并将其保存到数据库(phpmyadmin)

将图像保存到数据库并从服务器加载

如何使用 sqlite 将我的图像保存到数据库中? [关闭]

从 API 获取 JSON,将其添加到 sqlite3 数据库并自动获取下一页

如何从 Web Api 获取请求和响应并将其保存到数据库