源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android图片特效:黑白特效、圆角效果、高斯模糊

  • 时间:2021-04-24 00:45 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android图片特效:黑白特效、圆角效果、高斯模糊
[b]1.黑白效果[/b]
[u]复制代码[/u] 代码如下:
/**      * 将彩色图转换为黑白图      *      * @param 位图      * @return 返回转换好的位图      */     public static Bitmap convertToBlackWhite(Bitmap bmp) {         int width = bmp.getWidth(); // 获取位图的宽         int height = bmp.getHeight(); // 获取位图的高         int[] pixels = new int[width * height]; // 通过位图的大小创建像素点数组         bmp.getPixels(pixels, 0, width, 0, 0, width, height);         int alpha = 0xFF << 24;         for (int i = 0; i < height; i++) {             for (int j = 0; j < width; j++) {                 int grey = pixels[width * i + j];                 int red = ((grey & 0x00FF0000) >> 16);                 int green = ((grey & 0x0000FF00) >> 8);                 int blue = (grey & 0x000000FF);                 grey = (int) (red * 0.3 + green * 0.59 + blue * 0.11);                 grey = alpha | (grey << 16) | (grey << 8) | grey;                 pixels[width * i + j] = grey;             }         }         Bitmap newBmp = Bitmap.createBitmap(width, height, Config.RGB_565);         newBmp.setPixels(pixels, 0, width, 0, 0, width, height);         return newBmp;     }
[img]http://files.jb51.net/file_images/article/201303/2013320100150863.gif[/img] [b]2.图片圆角[/b]
[u]复制代码[/u] 代码如下:
/**      * 转换成圆角      *      * @param bmp      * @param roundPx      * @return      */     public static Bitmap convertToRoundedCorner(Bitmap bmp, float roundPx) {         Bitmap newBmp = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(),                 Config.ARGB_8888);         // 得到画布         Canvas canvas = new Canvas(newBmp);         final int color = 0xff424242;         final Paint paint = new Paint();         final Rect rect = new Rect(0, 0, bmp.getWidth(), bmp.getHeight());         final RectF rectF = new RectF(rect);         paint.setAntiAlias(true);         canvas.drawARGB(0, 0, 0, 0);         paint.setColor(color);         // 第二个和第三个参数一样则画的是正圆的一角,否则是椭圆的一角         canvas.drawRoundRect(rectF, roundPx, roundPx, paint);         paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));         canvas.drawBitmap(bmp, rect, rect, paint);         return newBmp;     }
[img]http://files.jb51.net/file_images/article/201303/2013320100328589.gif[/img] [b]3.高斯模糊[/b]
[u]复制代码[/u] 代码如下:
/**      * 高斯模糊      *      * @param bmp      * @return      */     public static Bitmap convertToBlur(Bitmap bmp) {         // 高斯矩阵         int[] gauss = new int[] { 1, 2, 1, 2, 4, 2, 1, 2, 1 };         int width = bmp.getWidth();         int height = bmp.getHeight();         Bitmap newBmp = Bitmap.createBitmap(width, height,                 Bitmap.Config.RGB_565);         int pixR = 0;         int pixG = 0;         int pixB = 0;         int pixColor = 0;         int newR = 0;         int newG = 0;         int newB = 0;         int delta = 16; // 值越小图片会越亮,越大则越暗         int idx = 0;         int[] pixels = new int[width * height];         bmp.getPixels(pixels, 0, width, 0, 0, width, height);         for (int i = 1, length = height - 1; i < length; i++) {             for (int k = 1, len = width - 1; k < len; k++) {                 idx = 0;                 for (int m = -1; m <= 1; m++) {                     for (int n = -1; n <= 1; n++) {                         pixColor = pixels[(i + m) * width + k + n];                         pixR = Color.red(pixColor);                         pixG = Color.green(pixColor);                         pixB = Color.blue(pixColor);                         newR = newR + pixR * gauss[idx];                         newG = newG + pixG * gauss[idx];                         newB = newB + pixB * gauss[idx];                         idx++;                     }                 }                 newR /= delta;                 newG /= delta;                 newB /= delta;                 newR = Math.min(255, Math.max(0, newR));                 newG = Math.min(255, Math.max(0, newG));                 newB = Math.min(255, Math.max(0, newB));                 pixels[i * width + k] = Color.argb(255, newR, newG, newB);                 newR = 0;                 newG = 0;                 newB = 0;             }         }         newBmp.setPixels(pixels, 0, width, 0, 0, width, height);         return newBmp;     }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部