Android 圆角图片和灰度图片

来源:互联网 发布:java readwritelock 编辑:程序博客网 时间:2024/04/29 15:42

图片本身加上圆角

[java] view plaincopy
  1. Bitmap myCoolBitmap = ... ; // <-- Your bitmap you want rounded   
  2. int w = myCoolBitmap.getWidth(), h = myCoolBitmap.getHeight();   
  3.   
  4. Bitmap rounder = Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888);   
  5. Canvas canvas = new Canvas(rounder);     
  6.   
  7. Paint xferPaint = new Paint(Paint.ANTI_ALIAS_FLAG);   
  8. xferPaint.setColor(Color.RED);   
  9.   
  10. canvas.drawRoundRect(new RectF(0,0,w,h), 20.0f, 20.0f, xferPaint);   
  11.   
  12. xferPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));   
  13. canvas.drawBitmap(myCoolBitmap, 0,0null);   
  14. canvas.drawBitmap(rounder, 00, xferPaint);   
  15. 或者  
  16. public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {  
  17.     Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),  
  18.         bitmap.getHeight(), Config.ARGB_8888);  
  19.     Canvas canvas = new Canvas(output);  
  20.   
  21.     final int color = 0xff424242;  
  22.     final Paint paint = new Paint();  
  23.     final Rect rect = new Rect(00, bitmap.getWidth(), bitmap.getHeight());  
  24.     final RectF rectF = new RectF(rect);  
  25.     final float roundPx = 12;  
  26.   
  27.     paint.setAntiAlias(true);  
  28.     canvas.drawARGB(0000);  
  29.     paint.setColor(color);  
  30.     canvas.drawRoundRect(rectF, roundPx, roundPx, paint);  
  31.   
  32.     paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  
  33.     canvas.drawBitmap(bitmap, rect, rect, paint);  
  34.   
  35.     return output;  
  36. }  

将彩色图转换为灰度图 

[java] view plaincopy
  1. /**  
  2.          * 将彩色图转换为灰度图  
  3.          * @param img 位图  
  4.          * <a href="\"http://www.eoeandroid.com/home.php?mod=space&uid=7300\"" target="\"_blank\"">@return</a>  返回转换好的位图  
  5.          */  
  6.         public Bitmap convertGreyImg(Bitmap img) {   
  7.           int width = img.getWidth();      //获取位图的宽   
  8.           int height = img.getHeight();    //获取位图的高   
  9.                
  10.           int []pixels = new int[width * height];  //通过位图的大小创建像素点数组   
  11.                
  12.           img.getPixels(pixels, 0, width, 00, width, height);   
  13.           int alpha = 0xFF << 24;      
  14.           for(int i = 0; i < height; i++)  {   
  15.             for(int j = 0; j < width; j++) {   
  16.               int grey = pixels[width * i + j];   
  17.                    
  18.               int red = ((grey    & 0x00FF0000 ) >> 16);   
  19.               int green = ((grey & 0x0000FF00) >> 8);   
  20.               int blue = (grey & 0x000000FF);   
  21.                    
  22.               grey = (int)((float) red * 0.3 + (float)green * 0.59 + (float)blue * 0.11);   
  23.               grey = alpha | (grey << 16) | (grey << 8) | grey;   
  24.               pixels[width * i + j] = grey;   
  25.             }   
  26.           }   
  27.           Bitmap result = Bitmap.createBitmap(width, height, Config.RGB_565);   
  28.           result.setPixels(pixels, 0, width, 00, width, height);   
  29.           return result;   
  30.         }   
转自http://blog.csdn.net/lidhsr/article/details/8647248
0 0