Androidx学习笔记(74)--- 对图片进行特效处理
来源:互联网 发布:如何化行最简形矩阵 编辑:程序博客网 时间:2024/06/06 04:59
对图片进行特效处理
首先定义一个矩阵对象
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轴坐标+20mt.setTranslate(10, 20);
镜面
//把X坐标都变成负数mt.setScale(-1, 1);//图片整体向右移mt.postTranslate(copyBm.getWidth(), 0);
倒影
//把Y坐标都变成负数mt.setScale(1, -1);//图片整体向下移mt.
post
Translate(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);
}
}
0 0
- Androidx学习笔记(74)--- 对图片进行特效处理
- Androidx学习笔记(28)--- 网络图片查看器---HttpURLConnection
- Android中使用Bitmap对图片进行特效处理
- Androidx学习笔记(9)-- logcat
- Androidx学习笔记(18)-- junit单元测试
- Androidx学习笔记(19)-- SQLite 简介
- Androidx学习笔记(21)-- SQLite 事务
- Androidx学习笔记(24)-- ArrayAdapter&SimpleAdapter
- Androidx学习笔记(24)--对话框
- Androidx学习笔记(48)--- 创建Activity
- Androidx学习笔记(51)--- Activity生命周期
- Androidx学习笔记(55)--- 广播接收者
- Androidx学习笔记(62)--- 服务Service
- Androidx学习笔记(68)--- 服务分类
- Androidx学习笔记(69)--- AIDL
- Androidx学习笔记(70)--- 进程优先级
- Androidx学习笔记(75)--- 画画板
- Androidx学习笔记(76)--- 撕衣服
- C++11多线程
- Git学习笔记(2)——工作区和版本库
- UVA1607 与非门电路&&二分答案
- ScrollView嵌套多个ListView
- 上机题目(初级)- Java网络操作-打印网页(Java)
- Androidx学习笔记(74)--- 对图片进行特效处理
- MFC中使用SetWindowPos GroupBox遮盖内部控件问题解决办法
- 关于机器人的遐想
- Linear Regression/线性回归与正则化(Andrew Ng 机器学习 一 )
- 《剑指offer》——左移字符串
- Androidx学习笔记(75)--- 画画板
- JVM-内存分配与回收策略
- Androidx学习笔记(76)--- 撕衣服
- linux 查看当前文件夹下每个文件或者文件夹的大小命令