引言

准备工作

在开始之前,请确保您的Android项目中已经集成了SQLite数据库的相关依赖。以下是一个简单的依赖示例:

<dependency>
    <groupId>androidx.sqlite</groupId>
    <artifactId>sqlite-ktx</artifactId>
    <version>2.1.0</version>
</dependency>

创建数据库表

CREATE TABLE IF NOT EXISTS images (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    image BLOB NOT NULL
);

将图片转换为二进制数据

fun convertImageToByteArray(image: Bitmap): ByteArray {
    val stream = ByteArrayOutputStream()
    image.compress(Bitmap.CompressFormat.JPEG, 100, stream)
    return stream.toByteArray()
}

存储图片到数据库

fun insertImageToDatabase(context: Context, imageName: String, image: Bitmap) {
    val db = context.applicationContext.database
    val values = ContentValues().apply {
        put("name", imageName)
        put("image", convertImageToByteArray(image))
    }
    db.insertOrThrow("images", null, values)
}

从数据库读取图片

fun loadImageFromDatabase(context: Context, id: Int): Bitmap? {
    val db = context.applicationContext.database
    val cursor = db.query("images", null, "id=?", arrayOf(id.toString()), null, null, null)
    if (cursor != null && cursor.moveToFirst()) {
        val byteArray = cursor.getBlob(2)
        return byteArray?.let { byteArrayInputStream ->
            BitmapFactory.decodeByteArray(byteArray, 0, byteArray.size)
        }
    }
    return null
}

总结