Android几种简单的获取Bitmap位图实例
1、通过BitmapFactory获取
BitmapFactory.decodeResource(Resources res, int Id); //参数一:资源实例 参数二:资源ID
2、通过Bitmap获取任意宽高或获取位图中任意区域
Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height);//参数一:位图资源
3获取一个BitmapDrawable包装的Bitmap对象
Bitmap bitmap=drawable.getBitmap();
Matrix ,中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放、平移、旋转等操作。
下面直接操作
public class MyBitmapView extends View {
private int width;
private int height;
private Paint paint;
private Matrix matrix;
private int BitmapWidth;
private int BitmapHeight;
private Bitmap bitmap;
public MyBitmapView(Context context, AttributeSet attrs) {
super(context, attrs);
paint=new Paint();
paint.setAlpha(150);
matrix=new Matrix();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
bitmap= BitmapFactory.decodeResource(getResources(), R.mipmap.abc);
canvas.drawBitmap(bitmap, 0, 0, paint);
BitmapHeight=bitmap.getHeight();
BitmapWidth=bitmap.getWidth();
//缩放
matrix.reset();
matrix.postScale(2, 2) ;
canvas.drawBitmap(bitmap, matrix, paint);
//平移
matrix.reset();
matrix.postTranslate(0, BitmapHeight);
canvas.drawBitmap(bitmap, matrix, paint);
//旋转180°,平移
matrix.reset();
matrix.postRotate(180);
matrix.postTranslate(BitmapWidth * 3, BitmapHeight * 3);
canvas.drawBitmap(bitmap, matrix, paint);
//侧切
matrix.reset();
matrix.postSkew(0, 1);
canvas.drawBitmap(bitmap, matrix, paint);
//水平对称
matrix.reset();
float matrix_values[]={1f,0f,0f,0f,-1f,0f,0f,0f,1f};
matrix.setValues(matrix_values);
matrix.postTranslate(0, BitmapHeight * 3);
canvas.drawBitmap(bitmap, matrix, paint);
//垂直对称
matrix.reset();
float matrix_values2[]={-1f,0f,0f,0f,1f,0f,0f,0f,1f};
matrix.setValues(matrix_values2);
matrix.postTranslate(BitmapWidth*3,0);
canvas.drawBitmap(bitmap,matrix,paint);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
setMeasuredDimension(width, height);
}
}