关闭

Android中的Bitmap和Drawable

标签: Bitmapdrawable基本操作相互转化
158人阅读 评论(0) 收藏 举报
分类:

相关概念

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;
	}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4198次
    • 积分:70
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:13篇
    • 译文:0篇
    • 评论:0条
    文章存档