android - 在 Android 中模糊图像

标签 android image-processing

我正在使用以下代码在 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;
}   

最佳答案

您的问题是您同时组合了所有颜色 channel 并且它们都相互溢出。您应该分别将模糊函数应用于红色、绿色和蓝色 channel 。

创建 SurfaceView 并使用 FX_SURFACE_BLUR 会更容易吗?旗帜?

关于android - 在 Android 中模糊图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4276967/

相关文章:

arrays - Imshow 和 imwrite 在 matlab 中显示空白图像

android - 带有搜索 EditText 的 MvvmCross Droid MvxListView?

android - 如何为最终用户调试 Android 应用卡住但不崩溃

android - 弹出窗口不会在后退按钮上关闭

c# - int rosu=Color.red.getRGB() 从 Java 到 C#

java - ImageJ - 从宏运行连接 - 有效选择错误

python - Python 中张量的全变分正则化

android - 如何修复 android Studio 4.1.1 中的 aapt2 错误?

android - 即使多次单击按钮,如何只增加一次分数?

python - 在python中将win32ui DataBitmap转换为数组