Bitmap,使用Matrix对图像几何变换

【Bitmap】

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】

Matrix ,中文里叫矩阵,高等数学里有介绍,,在图像处理方面,主要是用于平面的缩放、平移、旋转等操作。 下面直接操作

{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();}(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);}(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);setMeasuredDimension(width, height);}}

谁也不跟谁一辈子,有些事情没必要记在心上。

Bitmap,使用Matrix对图像几何变换

相关文章:

你感兴趣的文章:

标签云: