2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > android 背景设置正圆 Android图片特效:黑白特效 圆角效果 高斯模糊

android 背景设置正圆 Android图片特效:黑白特效 圆角效果 高斯模糊

时间:2022-08-17 12:57:38

相关推荐

android 背景设置正圆 Android图片特效:黑白特效 圆角效果 高斯模糊

/**

* 高斯模糊

*

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

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。