Mirror的博客

别在高兴的时候许诺,别在伤心的时候回答,别在愤怒的时候决定 ~~~

Android中的Bitmap和Drawable

相关概念

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 开发-基础
上一篇ScroolView中的ListView冲突问题解决方案
下一篇Android性能优化之布局优化
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭