Android缩放drawable

一、 相关概念
1. Drawable 就是一个可画的 对象,其可能是一张位图( BitmapDrawable ),也可能是一个 图形( ShapeDrawable ),还有可能是一 个图层( LayerDrawable ),我们根据画图的需求,创建相应的可画对象
2. Canvas 画布,绘制的目 的区域,用于绘图
3. Bitmap 位图,用于图的 处理
4. Matrix 矩阵,此例中用 于操作图片
二、 步骤
1. 把 drawable 画到位图对象上
2. 对位图对象做缩放(或旋转等)操作
3. 把位图再转换成 drawable
三、 示例
static Bitmap drawableToBitmap(Drawable drawable) // drawable 转换成 bitmap
{
int width = drawable.getIntrinsicWidth(); // 取 drawable 的长宽
int height = drawable.getIntrinsicHeight();
Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888:Bitmap.Config.RGB_565; // 取 drawable 的颜色格式
Bitmap bitmap = Bitmap.createBitmap(width, height, config); // 建立对应 bitmap
Canvas canvas = new Canvas(bitmap); // 建立对应 bitmap 的画布
drawable.setBounds(0, 0, width, height);
drawable.draw(canvas); // 把 drawable 内容画到画布中
return bitmap;
}

static Drawable zoomDrawable(Drawable drawable, int w, int h)
{
int width = drawable.getIntrinsicWidth();
int height= drawable.getIntrinsicHeight();
Bitmap oldbmp = drawableToBitmap(drawable); // drawable 转换成 bitmap
Matrix matrix = new Matrix(); // 创建操作图片用的 Matrix 对象
float scaleWidth = ((float)w / width); // 计算缩放比例
float scaleHeight = ((float)h / height);
matrix.postScale(scaleWidth, scaleHeight); // 设置缩放比例
Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height, matrix, true); // 建立新的 bitmap ,其内容是对原 bitmap 的缩放后的图
return new BitmapDrawable(newbmp); // 把 bitmap 转换成 drawable 并返回
}
}

转:http://blog.csdn.net/infsafe/article/details/5482194
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值