Java 将Drawable转换为BLOB数据类型

Java 将Drawable转换为BLOB数据类型,java,android,sqlite,Java,Android,Sqlite,我正在SQLite管理器中创建一个数据库。我想将图标存储到数据库中。另一个字段显示正确,但当我使用数据类型为BLOB的图标字段时,它不会显示 public Drawable icon; \\ Some value in this field 您可以将图像转换为字节数组,并将该字节数组存储在数据库中的blob字段中。您可以将图像作为字节数组从数据库中检索回来 如何从imageview获取字节数组: 在数据库中存储字节数组: 从字节数组检索图像: 我在上面的答案中做了一些修改,以获得字节数组ima

我正在SQLite管理器中创建一个数据库。我想将
图标
存储到数据库中。另一个字段显示正确,但当我使用数据类型为BLOB的
图标
字段时,它不会显示

public Drawable icon; \\ Some value in this field

您可以将图像转换为字节数组,并将该字节数组存储在数据库中的blob字段中。您可以将图像作为字节数组从数据库中检索回来

如何从imageview获取字节数组: 在数据库中存储字节数组: 从字节数组检索图像:
我在上面的答案中做了一些修改,以获得字节数组imageview

ImageView iv=(ImageView)findViewById(R.id.splashImageView)


如果要将多个图像保存到数据库,则可以创建自己的方法,如下所示: //从可绘制到int数组中检索图像:

iv.setDrawingCacheEnabled(true);
        Bitmap bitmap = iv.getDrawingCache();
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        byte[] bitmapdata = stream.toByteArray();
现在调用此方法,如下所示: 字节[]图像=转换字节数组(图像[位置])//
dbAdapter.insertValues(图像)

请问您是如何编写代码的?您能否给出将Drawable转换为BLOB数据类型sqlite和将BLOB转换为Drawable的示例。我所描述的方法是否适用于u?不,不适用,我很困惑我该如何做?这种方法有什么问题?值以字节[]表示imageInByte=stream.toByteArray();我刚刚在DB中设置了BLOB数据类型,那么如何初始化呢?我怎样才能返回并将其转换为bitmapImage?或可牵引
ImageView iv = (ImageView) findViewById(R.id.splashImageView);
Drawable d = iv.getBackground();
BitmapDrawable bitDw = ((BitmapDrawable) d);
Bitmap bitmap = bitDw.getBitmap();
System.out.println(".....d....."+d);
System.out.println("...bitDw...."+bitDw);
System.out.println("....bitmap...."+bitmap);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] imageInByte = stream.toByteArray();
ContentValues cv = new ContentValues();
cv.put(CHUNK, buffer); //CHUNK blob type field of your table
long rawId = database.insert(TABLE, null, cv); //TABLE table name
public static Bitmap convertByteArrayToBitmap(
    byte[] byteArrayToBeCOnvertedIntoBitMap)
{
    bitMapImage = BitmapFactory.decodeByteArray(
        byteArrayToBeCOnvertedIntoBitMap, 0,
        byteArrayToBeCOnvertedIntoBitMap.length);
    return bitMapImage;
}
iv.setDrawingCacheEnabled(true);
        Bitmap bitmap = iv.getDrawingCache();
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        byte[] bitmapdata = stream.toByteArray();
int[] IMAGES = { R.drawable.yourimage1, R.drawable.yourimage2, R.drawable.yourimage3,
            R.drawable.yourimage4, R.drawable.yourimage5 }; 

//create method to convert drawable images(which are in int) to byte[] as below:

public byte[] convertToByteArray(int image){

        Resources resources = getResources();
        Drawable drawable = resources.getDrawable(image);
        Bitmap bitmap =  ((BitmapDrawable)drawable).getBitmap();
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress( Bitmap.CompressFormat.PNG, 100, stream);
        byte[] bitmapData = stream.toByteArray();

              return bitmapData;

    }