Android中的Bitmap和Drawable

转载 2016年05月31日 15:02:21

相关概念

Drawable:一个可画的对象,可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable)

CanVas画布:绘图的目的区域,用于绘图

Bitmap位图:用于图的处理

Matrix矩阵


从资源中获取Bitmap

	Resources res = getResources();
	Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.icon);

Bitmap转化bytes[]

	public byte[] Bitmap2Bytes(Bitmap bm) {
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
		return baos.toByteArray();
	}

byte[]转化Bitmap

	public Bitmap Bytes2Bimap(byte[] b) {
		if (b.length != 0) {
			return BitmapFactory.decodeByteArray(b, 0, b.length);
		} else {
			return null;
		}
	}


Bitmap缩放

	public static Bitmap zoomBitmap(Bitmap bitmap, int width, int height) {
		int w = bitmap.getWidth();
		int h = bitmap.getHeight();
		Matrix matrix = new Matrix();
		float scaleWidth = ((float) width / w);
		float scaleHeight = ((float) height / h);
		matrix.postScale(scaleWidth, scaleHeight);
		Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true);
		return newbmp;
	}

Drawable转化Bitmap

public static Bitmap drawableToBitmap(Drawable drawable) {
		// 取 drawable 的长宽
		int w = drawable.getIntrinsicWidth();
		int h = drawable.getIntrinsicHeight();

		// 取 drawable 的颜色格式
		Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
				: Bitmap.Config.RGB_565;
		// 建立对应 bitmap
		Bitmap bitmap = Bitmap.createBitmap(w, h, config);
		// 建立对应 bitmap 的画布
		Canvas canvas = new Canvas(bitmap);
		drawable.setBounds(0, 0, w, h);
		// 把 drawable 内容画到画布中
		drawable.draw(canvas);
		return bitmap;
	}



Android开发中Bitmap和Drawable的区别

- Drawable和Bitmap之间可以互相转换,Drawable占用内存远小于Bitmap。- setImageDrawable使用资源文件;setImageBitmap使用bitmap图片,该图...
  • liu537192
  • liu537192
  • 2015年08月14日 17:37
  • 1434

Drawable和Bitmap的区别

Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好...
  • kazeik
  • kazeik
  • 2013年12月29日 20:59
  • 24368

Android常用的Drawable和Bitmap之间的转化方法

bitmap和Drawable间的区别: Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明...
  • zw904448290
  • zw904448290
  • 2016年11月07日 18:45
  • 8925

Android中Drawable与Bitmap相互转换的方法

1..Bitmap转Drawable Drawable drawable =new BitmapDrawable(bmp); 2.Drawable转Bitmap ...
  • baidu_33512336
  • baidu_33512336
  • 2017年04月09日 11:12
  • 691

Android 中 Bitmap 和 Drawable 相互转换的方法

Drawable —> Bitmap 获取资源文件(Drawable)中的 Bitmap Resources res = getResources(); Bitmap bmp = BitmapF...
  • l_lhc
  • l_lhc
  • 2016年03月18日 14:42
  • 21461

Android Drawable Resource学习(二)、BitmapDrawable和Bitmap

一、如何创建一个BitmapDrawable对象 Bitmap,代表一个位图图像,Android支持三种格式的位图图像:.png (preferred),.jpg (acceptable), .gi...
  • LonelyRoamer
  • LonelyRoamer
  • 2012年11月08日 11:56
  • 33884

Android中 Bitmap和Drawable相互转换的方法

1.Drawable—>Bitmap Resources res=getResources(); Bitmap bmp=BitmapFactory.decodeResource(res, R....
  • hezhipin610039
  • hezhipin610039
  • 2012年08月23日 11:47
  • 151124

Drawable和Bitmap在内存中谁更省内存(转自u010436741)

Drawable和Bitmap在内存中谁更省内存 今天在网上查找了下相关的资料,确实很少这方面的,不过也找到了一篇,根据这篇也做了相关测试 发现除了getResources().getDr...
  • zhu071011
  • zhu071011
  • 2015年09月09日 08:42
  • 1707

Android使用Palette把drawable转为bitmap图像大小改变的问题

项目中要做成以下的效果,本地应用直接使用包名和颜色值遍历找对应,三方应用要去提取app的icon颜色作为背景,首先想到了Android5.0新特性相关的palette。...
  • u012453607
  • u012453607
  • 2016年01月23日 15:07
  • 1109

android的Bitmap和Drawable用法

//方法: //1 生成圆角Bitmap图片 //2 生成Bitmap缩量图 //3 压缩图片场长宽以及kB //注意: //以上代码,测试其中一个方法时最好注释掉其余的代码 public...
  • u010156024
  • u010156024
  • 2015年03月06日 19:29
  • 1882
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中的Bitmap和Drawable
举报原因:
原因补充:

(最多只允许输入30个字)