У меня есть изображение в папке drawable, и я хочу преобразовать его в растровое изображение, а затем преобразовать в byte [], чтобы сохранить в базе данных, я могу преобразовать растровое изображение в байтовый массив, но я не могу получить изображение из drawable, так как Bitmap photo = BitmapFactory.decodeResource(getResources(), R.drawable.image);
возвращает ноль. Как это сделать?
что у меня есть на данный момент
Bitmap photo = BitmapFactory.decodeResource(getResources(), R.drawable.image); //this returns null
if(photo != null)
byte[] bytes = getBitmapAsByteArray(photo);
//this works
DatabaseHelper databaseHelper = new DatabaseHelper(this);
databaseHelper.add("DEFAULT",bytes);
UPDATE:
когда я устанавливаю растровое изображение на изображение с photo.setImageBitmap(bitmap);
после того, как оно получает информацию из базы данных, оно не появляется, кажется, что хранилище не работает
Я храню информацию в базе данных, как это
private static byte[] getBitmapAsByteArray(Bitmap bitmap) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 0, outputStream);
return outputStream.toByteArray();
}
public boolean addUserInformation(String username, byte[] picture){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("USERNAME", username);
if(picture!=null) {
values.put("PICTURE", picture);
}
id = db.insert(TABLE_NAME1, null, values);
}
db.close();
if(id == -1)
return false;
else
return true;
}
и получать информацию, подобную этой
Cursor data = databaseHelper.getUserInformation();
if(data.moveToFirst()) {
mUsername = data.getString(1);
bytes = data.getBlob(2);
if(bytes!=null)
profilePhoto = BitmapFactory.decodeByteArray(bytes, 0, data.getBlob(2).length);
}
с getUserInformation () внутри класса базы данных
public Cursor getUserInformation(){
SQLiteDatabase db = this.getReadableDatabase();
String query = "SELECT * FROM " + TABLE_NAME1;
Cursor c = db.rawQuery(query,null);
return c;
}