文档章节

android开发笔记之多媒体—图形图像处理

Mr_Nice
 Mr_Nice
发布于 2016/05/22 20:01
字数 1038
阅读 46
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

——图像的两种分类:

位图

   例子:单色位图(只有两种颜色(黑白),每一个像素点占一位)
        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);
Mr_Nice
粉丝 0
博文 47
码字总数 39947
作品 0
广州
私信 提问
加载中
请先登录后再评论。
浅入浅出Android(003):使用TextView类构造文本控件

基础: TextView是无法供编辑的。 当我们新建一个项目MyTextView时候,默认的布局(/res/layout/activity_main.xml)中已经有了一个TextView: <TextView 运行效果如下: 修改其文本内容...

樂天
2014/03/22
696
1
我的架构演化笔记 功能1: 基本的用户注册

“咚咚”,一阵急促的敲门声, 我从睡梦中惊醒,我靠,这才几点,谁这么早, 开门一看,原来我的小表弟放暑假了,来南京玩,顺便说跟我后面学习一个网站是怎么做出来的。 于是有了下面的一段...

强子哥哥
2014/05/31
976
3
【opencv】图形的绘制

1.矩形图像的绘制: 原函数:void cvRectangle(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8,int shift=0) img就是需要绘制的图像 pt1 and pt......

其实我是兔子
2014/10/08
1.2K
1
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
22
Nutch学习笔记4-Nutch 1.7 的 索引篇 ElasticSearch

上一篇讲解了爬取和分析的流程,很重要的收获就是: 解析过程中,会根据页面的ContentType获得一系列的注册解析器, 依次调用每个解析器,当其中一个解析成功后就返回,否则继续执行下一个解...

强子哥哥
2014/06/26
712
0

没有更多内容

加载失败,请刷新页面

加载更多

箭头翻转效果

vue实现点击箭头的旋转动画(收起展开)效果 https://blog.csdn.net/Rampage_w/article/details/106496646?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_ra......

花乐天
16分钟前
0
0
预告 | 一场解决SSL/TLS证书困局的硬核发布会

大数据时代,信息安全威胁日益严峻,国内国际(等保2.0 、密码法、GDPR等)法规的出台,使得数据安全和隐私保护愈加被高度重视, SSL 证书作为互联网的安全标签,需求量日益增加,已然成为企...

osc_q5m9dzk0
16分钟前
9
0
提高数据处理效率的excel小技巧(一)

转自:求知鸟 作者:求知鸟 这是一个技巧贴,直接上干货: 1、你想在excel中看到函数值是如何计算出来的? Ctrl+~:进入函数视图 2、去除重复值方式有哪些? a、数据—数据工具—删除重复值(...

朱小五
昨天
0
0
全网疯传,50个精选BAT等大厂大数据、算法落地经验,白拿不谢!

话不多说,直接上干货资料,我们精选了50个百度、腾讯、阿里等大厂的大数据、算法落地经验,分享给大家: 识别二维码,回复"大厂经验",获取PDF干货合集! 合集目录: 识别二维码,回复"大厂...

BBuf
今天
11
0
小白写论文 | 技术性论文结构剖析

【前言】:公众号的AI初学者交流群已经建立啦,公众号后台回复【加群】可以加入。群里都是些一起学习的朋友,大家学习路上,结个伴。 【公众号资源汇总】:炼丹图书馆 | AI初学者所需要的资料...

机器学习炼丹术
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部