Androidx学习笔记(74)--- 对图片进行特效处理

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/oBuYiSeng/article/details/50733187

对图片进行特效处理

  • 首先定义一个矩阵对象

    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());

MainActivity.java
public class MainActivity extends Activity {
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//这个对象是只读的
Bitmap bmSrc = BitmapFactory.decodeFile("sdcard/photo3.jpg");
//创建图片副本
//1.在内存中创建一个与原图一模一样大小的bitmap对象,创建与原图大小一致的白纸
Bitmap bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig());
//2.创建画笔对象
Paint paint = new Paint();
//3.创建画板对象,把白纸铺在画板上
Canvas canvas = new Canvas(bmCopy);
//4.开始作画,把原图的内容绘制在白纸上
Matrix mt = new Matrix();
//平移
// mt.setTranslate(20, 40);
//缩放
//sx:水平方向的缩放比例
//sy:竖直方向的缩放比例
// mt.setScale(0.5f, 0.5f);
// mt.setScale(0.5f, 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);
ImageView iv_copy = (ImageView) findViewById(R.id.iv_copy);
iv_src.setImageBitmap(bmSrc);
iv_copy.setImageBitmap(bmCopy);
}
 
 
}
展开阅读全文

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