我正在使用下面的代码在android中模糊图像,但它不起作用。我得到的最终图像是非常扭曲的颜色,而不是我想要的模糊。我做错了什么?
public Bitmap blurBitmap(Bitmap bmpOriginal)
{
int width, height;
height = bmpOriginal.getHeight();
width = bmpOriginal.getWidth();
Bitmap bmpBlurred = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
for (int i = 1; i < width - 1; i++) {
for (int j = 1; j < height - 1; j++) {
int color = (int) getAverageOfPixel(bmpOriginal, i, j);
bmpBlurred.setPixel(i, j, Color.argb(Color.alpha(color), Color.red(color), Color.green(color), Color.blue(color)));
}
}
return bmpBlurred;
}
private double getAverageOfPixel(Bitmap bitmap, int i, int j) {
return (
bitmap.getPixel(i-1, j-1) + bitmap.getPixel(i-1, j) + bitmap.getPixel(i-1, j+1) +
bitmap.getPixel(i, j-1) + bitmap.getPixel(i, j) + bitmap.getPixel(i, j+1) +
bitmap.getPixel(i+1, j-1) + bitmap.getPixel(i+1, j) + bitmap.getPixel(i+1, j+1)) / 9;
}
发布于 2010-11-25 12:31:37
你的问题是,你一次组合所有的颜色通道,它们都会相互溢出。应将模糊函数分别应用于红色、绿色和蓝色通道。
创建SurfaceView
并使用FX_SURFACE_BLUR
标志是否更容易?
https://stackoverflow.com/questions/4276967
复制相似问题