San*_*hry 21 core-graphics cgcontext ios cgcontextdrawimage
我有一个图像,前景中有一个黄色花瓶,透明背景:

我在CGContext上绘制它:
CGContextDrawImage(context, CGRectMake(0, 0, 100, 100), myImage.CGImage);
Run Code Online (Sandbox Code Playgroud)
我可以使用以下语句在它周围画一个阴影CGContextDrawImage:
CGContextSetShadowWithColor(context, CGSizeMake(0,0), 5, [UIColor blueColor].CGColor);
Run Code Online (Sandbox Code Playgroud)

但我想在图像周围放一个笔画,这样看起来就像是:

如果我这样做:
CGContextSetRGBStrokeColor(shadowContext, 0.0f, 0.0f, 1.0f, 1.0f);
CGContextSetLineWidth(shadowContext, 5);
CGContextStrokeRect(shadowContext, CGRectMake(0, 0, 100, 100));
Run Code Online (Sandbox Code Playgroud)
它(显然)围绕整个iamge绘制一个矩形边框,如下所示:
这不是我需要的.
但是在第三张图片中绘制边框的最佳方法是什么?
请注意,在这种情况下无法使用UIImageView,因此使用UIImageView的CALayer属性不适用.
war*_*enm 16
一种方法是使用扩张的数学形态学算子向外"增长"图像的alpha通道,然后使用得到的灰度图像作为模板来模拟笔划.通过填充扩张的面罩,然后将主图像绘制在顶部,您将获得笔划的效果.我已经创建了一个显示这种效果的演示,可以在Github上找到:https://github.com/warrenm/Morphology(所有来源都是MIT许可的,如果它对你有用).
这是它的实际截图:

请注意,这是非常缓慢的(扩张需要在每个像素上迭代内核),因此您应该选择笔划宽度并预先为每个源图像预先计算蒙版图像.
| 归档时间: |
|
| 查看次数: |
3976 次 |
| 最近记录: |