可绘制到byte

我有一个ImageView中的ImageView 。 这是非常小的(图标),我想存储在我的SQLite数据库。 我可以从mImageView.getDrawable()获取一个Drawable ,但是我不知道下一步该怎么做。 我不完全理解Android中的Drawable类。

我知道我可以从一个Bitmap获取一个字节数组,如:

 Bitmap defaultIcon = BitmapFactory.decodeStream(in); ByteArrayOutputStream stream = new ByteArrayOutputStream(); defaultIcon.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[] bitmapdata = stream.toByteArray(); 

但是,如何从Drawable获取一个字节数组?

 Drawable d; // the drawable (Captain Obvious, to the rescue!!!) Bitmap bitmap = ((BitmapDrawable)d).getBitmap(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[] bitmapdata = stream.toByteArray(); 

谢谢大家,这解决了我的问题。

 Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.my_pic); Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[] bitMapData = stream.toByteArray(); 
 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.tester); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[] bitMapData = stream.toByteArray(); 

如果Drawable是一个BitmapDrawable,你可以试试这个。

 long getSizeInBytes(Drawable drawable) { if (drawable == null) return 0; Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); return bitmap.getRowBytes() * bitmap.getHeight(); } 

Bitmap.getRowBytes()返回位图像素中行之间的字节数。

更多的参考这个项目: LazyList

 File myFile = new File(selectedImagePath); byte [] mybytearray = new byte [filelenghth]; BufferedInputStream bis1 = new BufferedInputStream(new FileInputStream(myFile)); bis1.read(mybytearray,0,mybytearray.length); 

现在图像存储在bytearray ..