Android 矩阵前奏

标签: 矩阵
10人阅读 评论(0) 收藏 举报
分类:

提示:

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

矩阵:图片出现倒置,拉伸变形,通过矩阵对图片进行处理 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;

        }
    }
}
查看评论

[150227]永不落幕的前奏诗(ソレヨリノ前奏詩)【汉化硬盘版+日文硬盘版】(带全CG存档,免安装+卸载+打开存档文件夹补丁)

yand zerochan   游戏名称:ソレヨリノ前奏詩 豪華版 游戏厂商:minori 游戏类型:互动式小说 发售日期:2015-02-27 getchu介绍页:http://www....
  • wangzi867258173
  • wangzi867258173
  • 2015-10-31 00:22:45
  • 2304

1.Java开发前奏

1.  计算机基础 1.1. 计算机 电子计算机,俗称电脑,是一种能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件和软件所组成,没有安装任何软件的计算机称为裸机。 1.2. 硬件和...
  • qq_33582732
  • qq_33582732
  • 2016-06-14 14:38:45
  • 1461

hadoop前奏之虚拟机的网络配置

虚拟机安装,没有多少可说的,主要是一个网络配置。 注意:确定windows系统的nat服务开启。 计算机->管理->服务和应用程序->服务->VM NAT,VM DHCP 否则,会死的很惨。 ...
  • deathDargon
  • deathDargon
  • 2017-03-29 23:26:57
  • 91

我的大学(前奏)

      考大学并不是一帆风顺的,经历了一次失败。提到大学的选择不能不提到那一段感情经历,因为那对我的影响持续到了现在!      高三那年,明显的感觉到很多人都很浮躁,包括我自己!我高一的学习并不...
  • qiqihua
  • qiqihua
  • 2006-02-07 21:54:00
  • 1145

学习uboot前奏之hardware-clock[s3c2440]

本节我们来讲下嵌入式系统中时钟的概念,时钟为系统工作提供了基本的时间秩序。作为S3C2440可以直接使用外部晶振,或者直接通过内部电路产生时钟源。关于时钟有三个名词我们需要理解: FCLK:用于CP...
  • wll1228
  • wll1228
  • 2017-11-22 22:36:18
  • 43

又一经典音乐,不说了,你懂得

●—★【近期最佳推荐歌曲TOP.6 】★—● ●.NO.1【 Gotta Be Somebody-Nickelback 】 ★星评:〖★★★★☆〗-4星. ∮评价:美国Billboar...
  • HelloJava1234
  • HelloJava1234
  • 2012-04-04 18:22:26
  • 1475

NDK开发前奏 - x团参数加密和签名校验

这次给大家分享一个关于《x团参数加密和签名校验》解决方案,主要涉及的内容是 MD5 加密算法和 JNI 基础。如果我们只是做 Android 应用开发,应当还是先把 Android 的基础知识玩溜一些...
  • z240336124
  • z240336124
  • 2018-01-06 14:34:10
  • 142

Pyunit源码笔记之七 testcase正式执行,重点重点重点

接上文,执行测试用例中的setup等等: 这里有个上下文管理器with, 关于这个,有个文章写得挺好:python上下文管理器ContextLib及with语句http://blog.csdn.net...
  • lpd3803
  • lpd3803
  • 2017-06-01 14:42:13
  • 135

NDK开发前奏 - 视频转码压缩

这几次的分享都是基于 NDK 部分的实战,并没有涉及到 C 和 C++ 的基础知识,春节后会从 C 基础的 HelloWorld 开始,还望我们能耐心等待。视频转码压缩开发中比较常见,记得上次有个哥们...
  • z240336124
  • z240336124
  • 2018-01-30 09:23:04
  • 131

计算器弹琴

QAQ 计算器版极乐净土 giligili恩,这道题目前面的都没有用 -根本不用特殊处理,直接当普通字符处理就行了。。。。#include #include #include #include ...
  • qq_35914587
  • qq_35914587
  • 2017-08-09 19:45:17
  • 580
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 6040
    积分: 721
    排名: 7万+
    博客专栏