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
原创粉丝点击