通常我使用的是 CALayer shadowRadius,但现在我还需要使用 UIImage 并根据图像中的内容为其应用形状阴影。
例如,当我有一个包含文本的图层并设置阴影时,它会自 Action 用于文本,而不仅仅是作用于图层的矩形。
在 Photoshop 中,这称为“图层样式”,它会根据图像内容的形状自动工作。
恐怕我需要实现一些 Harvard-Stanford-MIT-NASA 的硬核逻辑来在“形状图像”上应用阴影,即圆形图标的图像,其中图标周围的区域是完全透明的.
我能够在每个像素级别上操作图像,因为我已经在绘制图表时这样做了,所以如果有一些出色算法的开源实现,那就太棒了。如果不是:这基本上是如何工作的?我的猜测是我会“只是”尝试以某种方式模糊图像的灰度版本,然后用非模糊版本覆盖它。
最佳答案
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 channel ,但使所有像素为黑色)。虽然 CALayer 的阴影应该已经为你完成了。
如果您的图像已经合成到背景上(即没有真正的透明度),您会遇到更困难的问题,因为您首先需要“移除”背景,然后才能拥有对象的形状以生成阴影。
关于ios - 如何将柔和形状的阴影应用于其中具有透明区域的图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6412024/