Android图像的相关操作

图像的操作

  1. 拿到原图
    basebBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.img_small_1);

  2. 拿到一张与原图大小的纸
    copyBitmap = Bitmap.createBitmap(basebBitmap.getWidth(), basebBitmap.getHeight(), basebBitmap.getConfig());

  3. 将这张纸固定在画板上
    canvas = new Canvas(copyBitmap);

  4. 找一根笔
    paint = new Paint();

  5. 按照一定的规则处理图片
    Matrix matrix = new Matrix();// 1:1
    缩放
    matrix.setScale(0.5f, 0.5f);
    位移
    matrix.setTranslate(100, 100);
    旋转
    matrix.setRotate(-45);// 45代表顺时针旋转45度,默认左上角为原点 matrix.setRotate(45, basebBitmap.getWidth() / 2, basebBitmap.getHeight() / 2);
    镜面效果
    matrix.setScale(-1f, 1f); matrix.setTranslate(basebBitmap.getWidth(), 0); matrix.postTranslate(basebBitmap.getWidth(), 0);
    倒影
    matrix.setScale(1f, -1f); matrix.postTranslate(0, basebBitmap.getHeight());

如果要对图片进行多次操作,就必须postXXXX

  1. 将处理过的图片画出来  
    
    canvas.drawBitmap(basebBitmap, matrix, paint);
    iv2.setImageBitmap(copyBitmap);

图片的风格

ColorMatrix颜色矩阵
1,0,0,0,0 r
0,1,0,0,0 g
0,0,1,0,0 b
0,0,0,1,0 a
矩阵上的数字1表示对应的rgba的取值,该取值范围是(0-2)
在给paint设置ColorFilter属性
paint.setColorFilter(new ColorMatrixColorFilter(colors));
其中colors为float的数组对应colorMatrix的颜色矩阵

Canvas方法相关处理##

 private void init() {
    bitmap = Bitmap.createBitmap(500, 500, Config.ARGB_8888);
    canvas = new Canvas(bitmap);
    canvas.drawColor(Color.BLACK);// 设置画板的颜色
    paint = new Paint();
    paint.setColor(Color.RED);// 设置画笔颜色
    paint.setStrokeWidth(5);// 设置画笔粗细
    paint.setAntiAlias(true);// 抗锯齿(效果并不怎么好)
    paint.setStyle(Style.STROKE);//画笔风格空心
}     

画线
给定起始点的坐标即可。
长方形
给定的是左上角和右下角坐标
画扇形
先指定一个矩形画出内切圆在此基础上画出扇形

      public void drawArc(View view) {
      init();
      RectF rectF = new RectF(20, 20, 400, 400);
      canvas.drawArc(rectF, 0, 270, true, paint);
      iv.setImageBitmap(bitmap);
      }

画多边形
新建path对象,drawPath();
起始点用方法moveTo()设定,其他坐标用linkTO()设定,同时也可以在基础上添加扇形。用path.addArc(rectF, 0, 180)或是path.arcTo(rectF, 0, 180)注意这两个方法放的位置不同

扫描二维码即可关注玩转_android公众号

玩转_android的博客

2016/5/10 19:46:09

你可能感兴趣的:(Android图像的相关操作)