Я использую следующий код для сохранения растрового изображения в базе данных со слоем постоянства ROOM:
val size = bitmap.byteCount
val byteBuffer:ByteBuffer = ByteBuffer.allocate(size)
val bytes = ByteArray(size)
bitmap.copyPixelsToBuffer(byteBuffer)
byteBuffer.rewind()
byteBuffer.get(bytes)
showDebugInfo(bytes.size.toString())
Thread(Runnable {
registered = true
db.dataDao().insert(
Customer(customerName.text.toString(),
customerEmail.text.toString(),
customerPhone.text.toString(),
bytes
)
)
}).start()
Мой класс клиентов выглядит так:
@Entity
class Customer(var name:String, var email:String, @PrimaryKey var phone:String, @ColumnInfo(typeAffinity = ColumnInfo.BLOB) var codeQR:ByteArray)
и, наконец, мое декодирование растрового изображения выглядит следующим образом:
val bitmap:Bitmap = BitmapFactory.decodeByteArray(customer!![0].codeQR,0,customer!![0].codeQR.size)
codeQR.setImageBitmap(bitmap)
Я получаю следующую ошибку:
java.lang.IllegalStateException: BitmapFactory.decodeByte…ustomer!![0].codeQR.size) must not be null