Android中的简单图像处理
来源:互联网 发布:手机淘宝关注是收藏吗 编辑:程序博客网 时间:2024/05/01 21:53
只是用来记录自己在学习android过程中的一些经验,写下来来梳理一下条理。
在android中显示一张图片是很容易的,只要在ImageView标签中设置一下就行了。但是在ImageView标签中是将图片写死的,如果遇到需要根据情况来显示一张图片就需要动态的更改一张图片。但是图片还是显示在ImageView标签中的,只是根据需要来载入显示一张图片。
android中可以使用Bitmap这个类处理图像。
首先 Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.test1);这样可以将资源文件中的图片读入bitmap中。
然后通过mImageView.setImageBitmap(bitmap);这样来显示读入的图片,其中mImageView是我在xml文件中定义的ImageView标签的实例。
这是关于android中图像的读取以及显示。然后就需要来谈一谈在android中如何读一张图片进行处理了。
先是一种利用android给我们的ColorMatrix的类来对图片进行处理
/*bm 原图hue 修改后的色相值saturation修改后的饱和度值lum修改后的亮度值*/public static Bitmap handleImageEffect(Bitmap bm,float hue,float saturation,float lum){//因为不能直接对原来的图片进行更改,所以需要创建一张与原来图片相同大小的图片来更改Bitmap bmp=Bitmap.createBitmap(bm.getWidth(),bm.getHeight(),Bitmap.Config.ARGB_8888);//在新建的图片上使用画布Canvas canvas=new Canvas(bmp);//new一支画笔出来在画布上进行作图,从而达到在新建的图片上进行修改的目的Paint paint=new Paint(Paint.ANTI_ALIAS_FLAG);//调整色相色相,先new一个用来更改色相的颜色矩阵ColorMatrix hueMatrix=new ColorMatrix();//在色相的颜色矩阵中使用setRotate()方法,对RGB三个通道进行调整hueMatrix.setRotate(0,hue);//参数0表示是R通道hueMatrix.setRotate(1,hue);//参数1表示是G通道hueMatrix.setRotate(2,hue);//参数2表示是B通道//调整饱和度,new一个用来更改饱和度的颜色矩阵ColorMatrix saturationMatrix=new ColorMatrix();//使用setSaturation()方法将我们要更改的饱和度的值传进去saturationMatrix.setSaturation(saturation);//调整亮度,new一个用来更改亮度的颜色矩阵ColorMatrix lumMatrix=new ColorMatrix();//使用setScale()将我们要更改的亮度值传进去,本来应该对RGB三个通道进行更改的,为了方便就将三个通道的值设为一样的lumMatrix.setScale(lum, lum, lum, 1);//最后使用postConcat()方法将三个不同的更改颜色矩阵合并成一个ColorMatrix imageMatrix=new ColorMatrix();imageMatrix.postConcat(hueMatrix);imageMatrix.postConcat(saturationMatrix);imageMatrix.postConcat(lumMatrix);//在画笔中应用这个最终合并成的颜色矩阵paint.setColorFilter(new ColorMatrixColorFilter(imageMatrix));canvas.drawBitmap(bm,0,0,paint);return bmp;}
通过这样一个函数就能通过传入相应的更改值来达到对一张图片进行处理的目的。
0 0
- Android中的简单图像处理
- android中的图像处理
- Android中的图像处理
- 图像处理中的几个简单函数
- FFT在图像处理中的简单应用
- Android中的Bitmap、Drawable、Byte[]、String、之间的转换及图像简单处理
- NEON在S2平台图像处理中的简单应用
- 图像的简单处理
- 简单的图像处理
- 图像分割简单处理
- Opengl简单图像处理
- Android图像处理之镜像和简单滤镜效果
- 图像处理中的傅里叶变换
- 图像处理中的傅里叶变换
- 图像处理中的傅里叶变换
- Python中的图像处理
- 图像处理中的傅里叶变换
- 图像处理中的梯度
- 表字段的定义,null还是not null?
- 计算机网络之数据包的传递过程解析
- C++ 的 const和const_cast
- 指针和引用有什么区别
- js文件的编码问题
- Android中的简单图像处理
- ZOJ 3879 — Capture the Flag
- git学习(分支管理)
- Subsets II -- leetcode
- Sicily 14181. Flying Safely
- [Play Framework]Body parsers——请求主体解析器
- 02-线性结构2. 一元多项式求导 (25)
- Java垃圾回收机制
- 疯狂Java之学习笔记(15)-------------内部类