Bitmap,byte流,drawable之相互转换
刚开始学习android,以前学习J2me的时候也碰到过类似的问题,现在看到有同学总结过了,地址为:http://www.iteye.com/topic/642128?
?? 这里全文摘抄,以备学习:)?
1、Drawable → Bitmap?
Java代码?
public static Bitmap drawableToBitmap(Drawable drawable) {??
??????????
??????? Bitmap bitmap = Bitmap??
??????????????????????? .createBitmap(??
??????????????????????????????????????? drawable.getIntrinsicWidth(),??
??????????????????????????????????????? drawable.getIntrinsicHeight(),??
??????????????????????????????????????? drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888??
??????????????????????????????????????????????????????? : Bitmap.Config.RGB_565);??
??????? Canvas canvas = new Canvas(bitmap);??
??????? //canvas.setBitmap(bitmap);??
??????? drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());??
??????? drawable.draw(canvas);??
??????? return bitmap;??
}??
2、从资源中获取Bitmap?
Java代码?
Resources res=getResources();??
??
Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);??
3、Bitmap → byte[]?
Java代码?
private byte[] Bitmap2Bytes(Bitmap bm){??
??? ByteArrayOutputStream baos = new ByteArrayOutputStream();????
??? bm.compress(Bitmap.CompressFormat.PNG, 100, baos);????
??? return baos.toByteArray();??
?? }??
4、 byte[] → Bitmap?
Java代码?
private Bitmap Bytes2Bimap(byte[] b){??
??????????? if(b.length!=0){??
??????????????? return BitmapFactory.decodeByteArray(b, 0, b.length);??
??????????? }??
??????????? else {??
??????????????? return null;??
??????????? }??
????? }??