zoukankan      html  css  js  c++  java
  • 对图片进行特效处理

    ##对图片进行特效处理(熟悉)
    * 首先定义一个矩阵对象
     
    Matrix mt = new Matrix();
    * 缩放效果
     
    //x轴缩放1倍,y轴缩放0.5倍
    mt.setScale(1, 0.5f);
     
    * 旋转效果
     
    //以copyBm.getWidth() / 2, copyBm.getHeight() / 2点为轴点,顺时旋转30度
    mt.setRotate(30, copyBm.getWidth() / 2, copyBm.getHeight() / 2);
    * 平移
     
    //x轴坐标+10,y轴坐标+20
    mt.setTranslate(10, 20);
    * 镜面
     
    //把X坐标都变成负数
    mt.setScale(-1, 1);
    //图片整体向右移
            mt.postTranslate(copyBm.getWidth(), 0);
    * 倒影
     
    //把Y坐标都变成负数
    mt.setScale(1, -1);
    //图片整体向下移
            mt.postTranslate(0, copyBm.getHeight());
     
     
    部分代码:
     
    //加载原图
    Bitmap bmSrc = BitmapFactory.decodeResource(getResources(), R.drawable.photo3);
     
    //创建副本
    //1.创建与原图一模一样大小的bitmap对象,该对象中目前是没有内容的,可以比喻为创建了和原图一样大小的白纸
    Bitmap bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig());
    //2.创建画笔对象
    Paint paint = new Paint();
    //3.创建画板,把白纸铺到画板上
    Canvas canvas = new Canvas(bmCopy);
     
    Matrix mt = new Matrix();
     
    //平移效果,指定平移距离
    // mt.setTranslate(20, 10);
    //缩放效果,指定缩放比例
    // mt.setScale(2, 0.5f, bmCopy.getWidth() / 2, bmCopy.getHeight() / 2);
    //旋转效果
    // mt.setRotate(45, bmCopy.getWidth() / 2, bmCopy.getHeight() / 2);
     
    //镜面效果
    // mt.setScale(-1, 1);
    // mt.postTranslate(bmCopy.getWidth(), 0);
     
    //倒影效果
    mt.setScale(1, -1);
    mt.postTranslate(0, bmCopy.getHeight());
     
    canvas.drawBitmap(bmSrc, mt, paint);
     
    ImageView iv_src = (ImageView) findViewById(R.id.iv_src);
    iv_src.setImageBitmap(bmSrc);
    ImageView iv_copy = (ImageView) findViewById(R.id.iv_copy);
    iv_copy.setImageBitmap(bmCopy);
  • 相关阅读:
    AcWing
    AcWing
    AcWing
    AcWing
    AcWing
    2019牛客国庆集训派对day1
    模板
    2019南昌网络赛H The Nth Item 矩阵快速幂
    ACwing92 递归实现指数型枚举 dfs
    ACwing91 最短Hamilton路径 状压dp
  • 原文地址:https://www.cnblogs.com/SoulCode/p/6393346.html
Copyright © 2011-2022 走看看