【问题标题】:Alpha blending on the edges of an UIImageUIImage 边缘的 Alpha 混合
【发布时间】:2011-03-12 14:32:40
【问题描述】:

我有两张矩形图像:一张是前景,另一张是背景。我正在尝试混合前景图像的边缘,使前景图像看起来像是背景图像的“一部分”。换句话说,我正在尝试应用透明效果,前景图像的不透明度从图像中心的 100% 降低到边缘的 0%。我发现这个操作有时用不同的名称来引用,例如:alpha compositing、alpha blending、edge feathering 或 edge transparent。以下是我试图获得的效果的更详细描述:http://en.wikipedia.org/wiki/Alpha_compositing

我查看了 CGContext 文档,但没有找到任何开箱即用的函数。

有没有办法使用 CGContext 甚至 OpenGL 来做到这一点?有没有办法在非矩形图像上做到这一点?我知道,所有图像都是矩形的,但我的意思是一个图像,比方说,其中有一个圆圈,周围有一个透明区域。

【问题讨论】:

  • 如果您可以随意更改图像本身,请采用这种方式。使用 CGContext 是可能的,但比简单地翻转开关更难。一种通用的方法是创建一个位图上下文,将图像渲染到它上面(使用任何适用的变换),然后更改该位图上下文中的 alpha 值,然后再次将位图上下文转换为可显示的图像。不漂亮。
  • 查看stackoverflow.com/questions/4609132/…,并使用view.renderInContext: 将自定义像素级编辑应用到任何视图。
  • @mvds:感谢您的帮助,我找到了解决方案。

标签: iphone uiimage transparency alpha blending


【解决方案1】:

iOS 库中的 CGImageCreateWithMask() 函数可以进行 alpha 混合,同时降低边缘的不透明度。通过结合这两个链接中的代码,可以得到一些东西:

http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html

Creating mask with CGImageMaskCreate is all black (iphone)

蒙版中每个像素的灰度级别(从黑色到白色)将定义混合期间的不透明度级别。

【讨论】:

    猜你喜欢
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多