引言
准备工作
在开始之前,请确保您的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
}