android开发笔记之多媒体—图形图像处理
——图像的两种分类:
位图
例子:单色位图(只有两种颜色(黑白),每一个像素点占一位)256位图(每一个像素点有256个颜色,每一个像素点需要占一个字节)24位位图(每个像素点占3个字节)位图图像(bitmap), 亦称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的。这些点可以进行不同的排列和染色以构成图样。当放大位图时,可以看见赖以构成整个图像的无数单个方块。扩大位图尺寸的效果是增大单个像素,从而使线条和形状显得参差不齐。然而,如果从稍远的位置观看它,位图图像的颜色和形状又显得是连续的。常用的位图处理软件是Photoshop。位图的常见格式:png、jpg、bmp
矢量图
矢量图,也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点。矢量文件中的图形元素称为对象。每个对象都是一个自成一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置等属性。矢量图是根据几何特性来绘制图形,矢量可以是一个点或一条线,矢量图只能靠软件生成,文件占用内在空间较小,因为这种类型的图像文件包含独立的分离图像,可以自由无限制的重新组合。它的特点是放大后图像不会失真,和分辨率无关,适用于图形设计、文字设计和一些标志设计、版式设计等。
——图像的加载
——普通图片加载到内存
——大图片加载到内存
——图像的操作
主要借助Matrix这个类
在Android中,如果你用Matrix进行过图像处理,那么一定知道Matrix这个类。Android中的Matrix是一个3 x 3的矩阵,其内容如下:
Matrix的对图像的处理可分为四类基本变换:
Translate 平移变换
Rotate 旋转变换
Scale 缩放变换
Skew 错切变换
——图像的缩放处理matrix.setScale(0.8f, 0.8f)——图像的位移处理matrix.setTranslate(50f, 50f)——图像的旋转处理matrix.setRotate(45)matrix.setRotate(45, bitmap.getWidth() / 2, bitmap.getHeight() / 2);——图像的镜面处理matrix.setScale(-1f, 1f)matrix.postTranslate(bitmap.getWidth(), 0)——图像的倒影处理matrix.setScale(1f, -1f)matrix.postTranslate(0, bitmap.getHeight())
——图像的颜色处理
paint.setColorFilter(new ColorMatrixColorFilter(mf))
主要借助颜色矩阵(ColorMatrix)这个类:
颜色矩阵M是一个5*4的矩阵,在Android中,颜色矩阵M是以一维数组m=[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t]的方式进行存储的。
通过颜色矩阵修改了原图像的RGBA值,从而达到了改变图片颜色效果的目的。并且,颜色矩阵M的第一行参数abcde决定了图像的红色成分,第二行参数fghij决定了图像的绿色成分,第三行参数klmno决定了图像的蓝色成分,第四行参数pqrst决定了图像的透明度,第五列参数ejot是颜色的偏移量。
通常,改变颜色分量时可以通过修改第5列的颜色偏移量来实现,通过计算后可以得知该颜色矩阵的作用是使图像的红色分量和绿色分量均增加100,这样的效果就是图片泛黄(因为红色与绿色混合后得到黄色)。
除此之外,也可以通过直接对颜色值乘以某一系数而达到改变颜色分量的目的。将绿色分量放大了2倍,这样的效果就是图片泛绿色。
——Canvas相关方法
——画线:canvas.drawLine(20, 20, 200, 200, paint)——画矩形:canvas.drawRect(20, 20, 200, 200, paint)——画圆:canvas.drawCircle(250, 250, 250, paint);——画扇形:canvas.drawArc(rectF, 0, 90, true, paint)——画三角形:Path path = new Path();path.moveTo(250, 0);path.lineTo(150, 300);path.arcTo(new RectF(150, 200, 350, 400), 0, 180);path.lineTo(350, 300);path.lineTo(250, 0);path.close();canvas.drawPath(path, paint);
android开发笔记之多媒体—图形图像处理相关推荐
- android开发笔记之多媒体—撕衣服(开心一下)
效果图: 看到是不是很激动呢,在这里讲一下原理,其实很简单,就是两张图片叠在一下,当鼠标触摸的时候改变上面那张图片的透明度就可以了. 核心代码: public class MainActivity e ...
- Android开发笔记(一百五十三)OpenGL绘制三维图形的流程
从这篇文章开始,接下来会连载一系列的OpenGL相关博文,好好探讨如何在Android中进行OpenGL开发. OpenGL的全称是"Open Graphics Library", ...
- Android开发笔记(一百三十一)水波图形与水波动画
水波图形RippleDrawable RippleDrawable是Android在5.0之后新增的图形类,它的作用是在点击时展示水波动画,从而提示用户在这里按压了屏幕.这个提示效果类似于状态图形St ...
- Android开发笔记(一百二十九)使用变换图形
裁剪图形ClipDrawable ClipDrawable可设置图形的裁剪幅度,它的构造函数除了指定来源图形之外,还可以指定图形的裁剪方式(从开始裁剪还是从中间裁剪还是从末尾裁剪),以及裁剪方向(水平 ...
- Android开发笔记(序)写在前面的目录
知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教训,与网友互相切磋,从而去芜存菁进一步提升自己的水平.因此博主就想,入门的东西咱就不写了,人不能老停留在入 ...
- Android开发笔记(序)
本开发笔记,借鉴与其他开发者整理的文章范例与心得体会.在这里作为开发过程中的一个总结与笔记式记录. 如有侵犯作者权益,请及时联系告知删除.俗话说:集百家成一言,去粕成金. ************** ...
- Android开发笔记(序)写在前面的目录大全
转自 湖前琴亭 的博客https://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面 ...
- Andriod开发之二十:Android开发笔记(序)写在前面的目录
https://blog.csdn.net/aqi00/article/details/50038385 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教 ...
- Android开发笔记(九十五)自定义Drawable
Drawable Bitmap是Android对图像的定义描述,而Drawable则是对图像的展现描述,在View视图中显示图像都是通过Drawable来实现的.其中有关Bitmap的介绍参见< ...
最新文章
- A Neural Probabilistic Language Model 论文阅读及实战
- webpack打包后自动弹出浏览器查看效果
- solver.prototxt参数说明(二)
- VS.NET 2005真是太好用了!
- 5.Redis 发布订阅
- 访问动态页面很慢 PHP,PHP动态网页程序优化及高效提速问题
- 初学Java ssh之Spring 第二篇
- 系统集成相关岗位理解
- java中iscontinue意思_Java 中return、continue和break的区别
- java 考试复习整理——JAVA类和类成员的修饰符
- request技巧-utils的功能-cookie对象与字典的转换-URL编码与解码-关掉SSL验证
- JavaScript Math.random()随机数函数
- 虚拟机(VMware Workstation)的使用方法(转)
- cad没有命令输入框_cad中怎么输入文字?cad怎么输入文字?
- Java-Lambda表达式第二篇认识Lambda表达式
- 《系统集成项目管理》第八章 项目进度管理
- CAD打断曲线(网页版)
- cxy安装rasa心得
- 消息队列及常见消息中间件
- JFrame的使用方法
热门文章
- 当我谈秋招时,我谈些什么
- Xgboost如何处理缺失值
- 【Error】解决:Not creating XLA devices, tf_xla_enable_xla_devices not set
- 已知一个如图所示的训练数据集,其正例点是x1=(3,3),x1=(4,3),负例点是x3=(1,1),试求最大间隔分离超平面。
- 吴恩达2022机器学习——第二部分高级学习算法第二周笔记
- Python——帮助小学生练习10以内加法的程序
- 将Maven项目直接用Tomcat运行
- Android网络框架Volley项目实战-刘桂林-专题视频课程
- echarts 折线图,无数据时不显示灰色线条
- mac新机配置相关环境