Android 矩阵前奏

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37711172/article/details/79979428

提示:

矩阵这个词是无意间想起来的,在美颜相机里发现可以给不同的照片 设置色彩,很好奇就百度搜了一下,发现原来是用矩阵实现的,并且分为颜色矩阵和普通矩阵,也懒的写了,就随便敲了几行代码保存起来, 以后有时间弄懂了再来补充

矩阵:图片出现倒置,拉伸变形,通过矩阵对图片进行处理 pro:前乘 post:后乘

public class MainActivity extends Activity implements View.OnClickListener {
    private Button mB,mB2,mB3,mB4;
    private ImageView mIv,mIv2;
    private Bitmap bitmap;
    private Bitmap newBitmap;//处理之后的图片
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bitmap= BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
        initView();
    }
    private void initView() {
        mB=(Button) findViewById(R.id.mB);
        mB2=(Button) findViewById(R.id.mB2);
        mB3=(Button) findViewById(R.id.mB3);
        mB4=(Button) findViewById(R.id.mB4);
        mIv=(ImageView) findViewById(R.id.mIv);
        mIv2=(ImageView) findViewById(R.id.mIv2);

        mIv2.setImageBitmap(bitmap);

        mB.setOnClickListener(this);
        mB2.setOnClickListener(this);
        mB3.setOnClickListener(this);
        mB4.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        int ID = v.getId();
        switch (ID) {
            case R.id.mB://缩放
                //1.创建一个新的图片,用来进行处理
                newBitmap=Bitmap.createBitmap(bitmap.getWidth()/2, bitmap.getHeight()/2, Bitmap.Config.ARGB_4444);
                //2.创建一个矩阵,用来对图片进行处理
                Matrix matrix=new Matrix();
                //3.矩阵处理图片的公式
                matrix.postScale(0.5f,0.5f);
                //4.将新创的图片当作画板
                Canvas canvas=new Canvas(newBitmap);
                //5.根据写的处理公式,用过画布对图片进行矩阵处理
                canvas.drawBitmap(bitmap, matrix, null);
                //6.将处理完的图片设置给控件
                mIv.setImageBitmap(newBitmap);
                break;
            case R.id.mB2://平移
                newBitmap=Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(), Bitmap.Config.ARGB_4444);
                Matrix matrix2=new Matrix();
                matrix2.postTranslate(0f, 50f);
                Canvas canvas2=new Canvas(newBitmap);
                canvas2.drawBitmap(bitmap, matrix2, null);
                mIv.setImageBitmap(newBitmap);
                break;
            case R.id.mB3:
                //旋转
                Matrix matrix3=new Matrix();
                newBitmap=Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_4444);
                Canvas canvas3=new Canvas(newBitmap);
                matrix3.postRotate(180, bitmap.getWidth()/2, bitmap.getHeight()/2);
                canvas3.drawBitmap(bitmap, matrix3, null);
                mIv.setImageBitmap(newBitmap);
                break;
            case R.id.mB4:
                //错切
                newBitmap=Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_4444);
                Matrix matrix4=new Matrix();
                Canvas canvas4=new Canvas(newBitmap);
                matrix4.postSkew(1f, 0f);
                canvas4.drawBitmap(bitmap, matrix4, null);
                mIv.setImageBitmap(newBitmap);
                break;

        }
    }
}
阅读更多
想对作者说点什么?

博主推荐

换一批

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