android开发笔记之多媒体—图形图像处理
2016-05-14 16:22
323 查看
——图像的两种分类:
——图像的加载
——普通图片加载到内存
——大图片加载到内存
——图像的操作
主要借助Matrix这个类
在Android中,如果你用Matrix进行过图像处理,那么一定知道Matrix这个类。Android中的Matrix是一个3 x 3的矩阵,其内容如下:
Matrix的对图像的处理可分为四类基本变换:
Translate 平移变换
Rotate 旋转变换
Scale 缩放变换
Skew 错切变换
——图像的颜色处理
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相关方法
位图
例子:单色位图(只有两种颜色(黑白),每一个像素点占一位) 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 Studio 工程的 .gitignore
- Android之Intent 序列化反序列化
- Android之用SingleTask和TaskAffinity解决手机截取的项目启动页面问题
- 大量 Material Design 学习资源
- android中关于位移动画TranslateAnimation开始和结束时闪动问题的记录
- android-----带你一步一步优化ListView(一)
- Android中的Rect类——奇葩的思维
- android:width与android:layout_width的区别
- 第一章:Android概论解析
- Android Studio安装
- Android AutoLayout自适应的适配方式
- Android数据存储方式
- AndroidStudio设置SVN版本控制工具
- 收集android上开源的酷炫的交互动画和视觉效果:Interactive-animation
- Android 自定义SnakeBar
- 【转】Google推荐的命名规则——Android图片资源
- Android 一键生成Parcelable
- Ubuntu 12.10编译Android 4.0.3的常见错误
- Android 自定义checkbox样式
- 安卓绘制圆形图片