ios – 如何将柔和形状的阴影应用于具有透明区域的图形?

通常我正在使用CALayer shadowRadius,但现在我还需要使用UI
Image并根据图像中的内容对其应用形状阴影.

例如,当我有一个包含文本的图层并设置阴影时,它会自动在文本上工作,而不仅仅在图层的矩形上.

在Photoshop中,这称为“图层样式”,它会根据图像内容的形状自动运行.

我担心我需要实施哈佛 – 斯坦福 – 麻省理工学院 – 美国国家航空航天局的一种硬核逻辑,在“形状图像”上应用阴影,即图标周围区域完全透明的圆形图标图像.

我能够按照像素级别操作图像,因为我这样做已经绘制了图表,所以如果有一些奇妙算法的开源实现,这将是非常棒的.如果没有:这基本上如何工作?我的猜测是,我会“只是”尝试以某种方式模糊我的图像的灰度版本,然后用非模糊版本覆盖它.

最佳答案

My guess is I would “just” try to blur a grayscaled version of my image somehow and then overlay it with the non-blurred version.

实际上,这就是它.除了模糊图像的灰度版本之外,模糊图像的纯色版本(即保持alpha通道,但使所有像素变黑).虽然CALayer的阴影应该已经为你做了.

如果您的图像已经合成到背景上(即没有真正的透明度),那么您将面临更难的问题,因为您首先需要“移除”背景,然后才能获得对象的形状以生成阴影.

点赞