Проблемы с расшифровкой базы данных BLOB - PullRequest
0 голосов
/ 27 октября 2018

Я использую следующий код для сохранения растрового изображения в базе данных со слоем постоянства 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
...