我正在寻找 iOS 和 Android 库(最好)或算法来帮助我以类似于在 Photoshop 中处理图像的方式来羽化图像的边缘。下图显示了算法的预期效果。我对图像的羽化边界不感兴趣,只对 alpha 边缘感兴趣。我一直在寻找能够在没有运气的情况下完成几天的算法。任何帮助将不胜感激。
最佳答案
假设你有 alpha channel (就像在透明背景的照片上一样),常规的卷积模糊矩阵似乎应该满足你。
但是不要通过 RGB channel - 您应该只通过 ALPHA channel 。
在此处检查模糊滤镜: https://en.wikipedia.org/wiki/Kernel_%28image_processing%29
您对框模糊/高斯模糊感兴趣。然而,为了使这种效果更平滑 - 您应该使用更大尺寸的矩阵。
算法将满足您的需求的原因是,如果所有周围像素的 alpha 为 0 - 它仍将为 0。如果为 255 - 它将保持为 255。只有 alpha 0/255 之间的边界区域中的像素会受到影响。
编辑:
请用 chrome 检查这个 fiddle (在 ff 中真的很慢): http://jsfiddle.net/5L40ms65/
您可以在代码末尾查看算法。自实现以来,我注意到: - 如果所有相邻像素都是 255 或 0(alpha channel ),则无需模糊 - 在其他情况下也需要模糊 RGB
一般来说:
RADIUS = 2 (makes total width of matrix = 5)
For x = 0..width
for y = 0..width
if all pixels in square of radius 2 are alpha = 0
do nothing
elsif all pixels in square have alpha = 255
do nothing
else
pixel[x][y].RGB = average RGB of adjacent pixels where alpha != 0
pixel[x][y].ALPHA = average ALPHA in square
半径=2 的示例结果
当然这是相当概念的程序,有很多地方可以内存和调整这个脚本,但是它应该使大局清晰
关于android - iOS 和 Android 图像边缘羽化算法或库,类似于 photoshop 的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32362263/