Android图片特效:黑白特效、圆角效果、高斯模糊_安卓软件开发教程-查字典教程网
Android图片特效:黑白特效、圆角效果、高斯模糊
Android图片特效:黑白特效、圆角效果、高斯模糊
发布时间:2016-12-28 来源:查字典编辑
摘要:1.黑白效果复制代码代码如下:/***将彩色图转换为黑白图**@param位图*@return返回转换好的位图*/publicstaticB...

1.黑白效果

复制代码 代码如下:

/**

* 将彩色图转换为黑白图

*

* @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;

}

2.图片圆角

复制代码 代码如下:

/**

* 转换成圆角

*

* @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;

}

3.高斯模糊

复制代码 代码如下:

/**

* 高斯模糊

*

* @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;

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新安卓软件开发学习
    热门安卓软件开发学习
    编程开发子分类