在没有指定的地方,这个问题只是建立在 github 上CameraCaptureActivity
的grafika项目之上。
它具有利用 3x3 内核的内置模糊效果
kernel = new float[] {
1f/16f, 2f/16f, 1f/16f,
2f/16f, 4f/16f, 2f/16f,
1f/16f, 2f/16f, 1f/16f };
然而这种模糊效果还不够强,我正在寻找类似高斯效应在 iOS 上可以做什么的UIVisualEffectView
东西,它看起来像这样:
一个很好的平滑重度模糊效果,但到目前为止,我管理的最好的是:
正如你所看到的,它几乎没有那么平滑而且有点方正。
我通过转换为使用这个方便的工具生成的 5x5 内核来实现这一点,该工具的 sigma 为 30,内核大小为 5。它产生以下结果:
kernel = new float[] {
0.039911f, 0.039978f, 0.04f, 0.039978f, 0.039911f,
0.039978f, 0.040044f, 0.040067f, 0.040044f, 0.039978f,
0.04f, 0.040067f, 0.040089f, 0.040067f, 0.04f,
0.039978f, 0.040044f, 0.040067f, 0.040044f, 0.039978f,
0.039911f, 0.039978f, 0.04f, 0.039978f, 0.039911f
};
为了在项目中工作,我Grafika
必须在课堂上进行修改KERNEL_SIZE
mTexOffset
Texture2dProgram
KERNEL_SIZE
现在25
和mTextOffset
现在计算如下:
public void setTexSize(int width, int height) {
float rw = 50.0f / width;
float rh = 50.0f / height;
float rw50 = rw * 0.5f;
float rh50 = rh * 0.5f;
mTexOffset = new float[] {
-rw, -rh, -rw50, -rh, 0f, -rh, rw50, -rh, rw, -rh,
-rw, -rh50, -rw50, -rh50, 0f, -rh50, rw50, -rh50, rw, -rh50,
-rw, 0f, -rw50, 0f, 0f, 0f, rw50, -0f, rw, 0f,
-rw, rh50, -rw50, rh50, 0f, rh50, rw50, rh50, rw, rh50,
-rw, rh, -rw50, rh, 0f, rh, rw50, rh, rw, rh
};
};
有没有人对我可以修改什么以实现类似模糊的 iOS 有建议(我认为 iOS 也在减轻像素)?我认为我真正出错的地方是 setTextSize() 计算,特别是50.0f
值,我刚刚从空气中提取了这个并观察了它的效果