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