Используйте этот код для преобразования изображения в ByteArray, который может быть сохранен как BLOB:
private byte[] getBitmapAsByteArray(Bitmap bitmap) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// Middle value is quality, but PNG is lossless, so it's ignored.
bitmap.compress(CompressFormat.PNG, 0, outputStream);
return outputStream.toByteArray();
}
OR
private byte[] getBitmapAsByteArray(Bitmap bitmap) {
final int width = bitmap.getWidth();
final int height = bitmap.getHeight();
ByteBuffer byteBuffer = ByteBuffer.allocate(width * height * 4);
bitmap.copyPixelsToBuffer(byteBuffer);
return byteBuffer.array();
}
Первый вариант всегда должен работать. Второй вариант предполагает 32 бит на пиксель (формат ARGB_8888), то есть 4 байта. если ваше растровое изображение имеет другой формат (например, 565), оно нуждается в некоторых модификациях.
Когда вы читаете данные изображения из базы данных, сделайте это так:
public Bitmap loadIcon(long iconId) {
// Prepare the cursor to read from database....
byte[] bitmapData = cursor.getBlob(cursor.getColumnIndex(Columns.Icons.DATA));
return BitmapFactory.decodeByteArray(bitmapData, 0, bitmapData.length);
}
Убедитесь, что база данных определена как BLOB при выполнении оператора SQL «создать таблицу».