1. 程式人生 > >Android中 Bitmap和Drawable相互轉換的方法

Android中 Bitmap和Drawable相互轉換的方法

canvas board null height .com factory oar tool pla

1、Drawable --> Bitmap

[java] view plain copy
  1. Bitmap drawable2Bitmap(Drawable drawable) {
  2. if (drawable instanceof BitmapDrawable) {
  3. return ((BitmapDrawable) drawable).getBitmap();
  4. } else if (drawable instanceof NinePatchDrawable) {
  5. Bitmap bitmap = Bitmap
  6. .createBitmap(
  7. drawable.getIntrinsicWidth(),
  8. drawable.getIntrinsicHeight(),
  9. drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
  10. : Bitmap.Config.RGB_565);
  11. Canvas canvas = new Canvas(bitmap);
  12. drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
  13. drawable.getIntrinsicHeight());
  14. drawable.draw(canvas);
  15. return bitmap;
  16. } else {
  17. return null;
  18. }
  19. }


2、從資源中獲取的Drawable --> Bitmap

[java] view plain copy
  1. Resources res = getResources();
  2. Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.pic);

3、Bitmap --> Drawable

[java] view plain copy
  1. Drawable bitmap2Drawable(Bitmap bitmap) {
  2. return new BitmapDrawable(bitmap);
  3. }

4、Bitmap --> byte[]

[java] view plain copy
  1. byte[] Bitmap2Bytes(Bitmap bm) {
  2. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  3. bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
  4. return baos.toByteArray();
  5. }

5、 byte[] --> Bitmap

[java] view plain copy
    1. Bitmap Bytes2Bimap(byte[] b) {
    2. if (b.length != 0) {
    3. return BitmapFactory.decodeByteArray(b, 0, b.length);
    4. } else {
    5. return null;
    6. }
    7. }

Android中 Bitmap和Drawable相互轉換的方法