android图像处理底片效果

案头见蠹鱼,犹胜凡俦侣。这篇文章主要讲述android图像处理底片效果相关的知识,希望能为你提供帮助。
这篇将讲到图片特效处理的底片效果。跟前面一样是对像素点进行处理,算法是通用的。
算法原理:将当前像素点的RGB值分别与255之差后的值作为当前点的RGB值。
例:
ABC
求B点的底片效果:
B.r = 255 - B.r;
B.g = 255 - B.g;
B.b = 255 - B.b;
效果图:

android图像处理底片效果

文章图片
android图像处理底片效果

文章图片


                      效果图                                                                     原图
代码:
【android图像处理底片效果】 
[java] view plain copy
    1. package  com.color;    
    2.    
    3. import  android.content.Context;    
    4. import  android.graphics.Bitmap;    
    5. import  android.graphics.BitmapFactory;    
    6. import  android.graphics.Canvas;    
    7. import  android.graphics.Color;    
    8. import  android.graphics.Paint;    
    9. import  android.util.AttributeSet;    
    10. import  android.widget.ImageView;    
    11.    
    12. public  class  ColorView  extends  ImageView  {   
    13.    
    14.         private  Paint  myPaint  =  null;    
    15.         private  Bitmap  bitmap  =  null;    
    16.         private  int  width,height;    
    17.         private  int[]  oldPixels;        
    18.         private  int[]  newPixels;        
    19.         private  int  color,color2;    
    20.         private  int  pixelsR,pixelsG,pixelsB,pixelsA,pixelsR2,pixelsG2,pixelsB2;    
    21.            
    22.         public  ColorView(Context  context,  AttributeSet  attrs)   
    23.         {   
    24.                 super(context,  attrs);    
    25.                 bitmap  =  BitmapFactory.decodeResource(context.getResources(),R.drawable.ww);      
    26.                 width  =  bitmap.getWidth();        
    27.                 height  =  bitmap.getHeight();    
    28.                 oldPixels  =  new  int[width*height];      
    29.                 newPixels  =  new  int[width*height];    
    30.                 invalidate();    
    31.         }   
    32.         @Override   
    33.         protected  void  onDraw(Canvas  canvas)  {   
    34.                 super.onDraw(canvas);      
    35.                 //获取像素   
    36.                 bitmap.getPixels(oldPixels,  0,  width,  0,  0,  width,  height);    
    37.                    
    38.                 for(int  i  =  1; i  <   height*width;   i++){   
    39.                                 color  =  oldPixels[i];    
    40.                                 //获取RGB分量   
    41.                                 pixelsA  =  Color.alpha(color);    
    42.                                 pixelsR  =  Color.red(color);    
    43.                                 pixelsG  =  Color.green(color);    
    44.                                 pixelsB  =  Color.blue(color);    
    45.                                    
    46.                                 //转换   
    47.                                 pixelsR  =  (255  -  pixelsR);    
    48.                                 pixelsG  =  (255  -  pixelsG);    
    49.                                 pixelsB  =  (255  -  pixelsB);    
    50.                                 //均小于等于255大于等于0   
    51.                                 if(pixelsR  >   255){   
    52.                                         pixelsR  =  255;    
    53.                                 }   
    54.                                 else  if(pixelsR  <   0){   
    55.                                         pixelsR  =  0;    
    56.                                 }   
    57.                                 if(pixelsG  >   255){   
    58.                                         pixelsG  =  255;    
    59.                                 }   
    60.                                 else  if(pixelsG  <   0){     
    61.                                         pixelsG  =  0;    
    62.                                 }   
    63.                                 if(pixelsB  >   255){   
    64.                                         pixelsB  =  255;    
    65.                                 }   
    66.                                 else  if(pixelsB  <   0){   
    67.                                         pixelsB  =  0;    
    68.                                 }   
    69.                                 //根据新的RGB生成新像素   
    70.                                 newPixels[i]  =  Color.argb(pixelsA,  pixelsR,  pixelsG,  pixelsB);    
    71.                                    
    72.                 }   
    73.                 //根据新像素生成新图片   
    74.                 bitmap.setPixels(newPixels,  0,  width,  0,  0,  width,  height);    
    75.                 canvas.drawBitmap(bitmap,0,0,myPaint);    
    76.         }   


    推荐阅读