`
825288003
  • 浏览: 110154 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

安卓开发中Bitmap/Drawable/byte[]互换 及Bitmap.Config里的一些参数

 
阅读更多
在网上搜了一些其它的方法,在这里分享下

  1.Drawable—>Bitmap

  Resources res=getResources();

  Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.sample_0);

  2.Bitmap---->Drawable

  Drawable drawable =new BitmapDrawable(bmp);

  其他方法

  1、Drawable → Bitmap

  public static Bitmap drawableToBitmap(Drawable drawable)

  {

  Config config;

  if (drawable.getOpacity() != PixelFormat.OPAQUE)

  {

  config = Bitmap.Config.ARGB_8888;

  }

  else

  {

  config = Bitmap.Config.RGB_565;

  }

  Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),

  rawable.getIntrinsicHeight(),config);

  Canvas canvas = new Canvas(bitmap);

  // canvas.setBitmap(bitmap);

  drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),

  drawable.getIntrinsicHeight());

  drawable.draw(canvas);

  return bitmap;

  }

  2、从资源中获取Bitmap

  Resources res=getResources();

  Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);

  3、Bitmap → byte[]

  private byte[] Bitmap2Bytes(Bitmap bm)

  {

  ByteArrayOutputStream baos = new ByteArrayOutputStream();

  bm.compress(Bitmap.CompressFormat.PNG, 100, baos);

  return baos.toByteArray();

  }

  4、 byte[] → Bitmap

  private Bitmap Bytes2Bimap(byte[] b)

  {

  if (b.length != 0)

  {

  return BitmapFactory.decodeByteArray(b, 0, b.length);

  } else

  {

  return null;

  }

  }
A                 R              G                B
透明度      红色          绿色           蓝色

Bitmap.Config  ARGB_4444              每个像素  占四位 
Bitmap.Config  ARGB_8888    32        每个像素  占八位
Bitmap.Config  RGB_565      16        R占5位   R 占6位         B占5位    没有透明度(A)
其实很简单嘛就跟double  float  一样   你越到精度也就越到
但是一点主意点  一半情况下我们都是用argb888    但是无可厚非  它也相对的很占内存
因为一个像素32位  8位一个字节   如果是800*480的图片的话自己算  估计有1M多了 
所以各位使用的时候悠着点   因为作为应用开发人员你使用的内存是有限的
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics