我正在尝试在位图上创建一个非常简单的模糊效果,虽然我知道已经存在算法,但我仍然想了解它们是如何工作的。这是我到目前为止的代码,目前没有类似于模糊算法的东西,我只是想知道setPixels方法如何工作得更好。
public void blurTest(Bitmap sentBm) {
Bitmap blurredBitmap = sentBm;
int bmWidth = sentBm.getWidth();
int bmHeight = sentBm.getHeight();
int[] pixels = new int[bmWidth * bmHeight];
sentBm.getPixels(pixels, 0,bmWidth,0,0,bmWidth,bmHeight);
for (int i = 0; i < 200000; i++) {
pixels[i] = Color.BLACK;
}
blurredBitmap.setPixels(pixels, 0, bmWidth, 0, 0, bmWidth, bmHeight);
我已经对模糊算法如何工作做了一些研究,虽然我理解它们背后的理论,但我不知道如何将它应用于每个像素。例如,通常使用权重数来表示像素被模糊多少。距离中心两个像素的像素具有0.065的权重或者例如类似的像素。这是有道理的,但我如何以编程方式扫描每个像素并为附近的像素添加权重?我只需要最简单的算法,就可以学习。
或者让事情变得更简单 - 如何为所有像素添加25%的纯蓝色?这让我感到困惑,如何从单个像素中添加和减去值。
感谢任何帮助,谢谢!