3

I am using “CGContextSetBlendMode” function in Quartz2D,but I don't understand the meaning of "kCGBlendModeColorDodge" constant.What's the formula of kCGBlendModeColorDodge?

4

2 回答 2

1

这是“颜色减淡”的公式:

// v1 and v2 are the RGBA pixel values for the two pixels 
// "on top of each other" being blended
void someFunction(v1,v2) {
    return Math.min(v1 + v2, 255);
}

来源是这个页面:

http://jswidget.com/blog/2011/03/11/image-blending-algorithmpart-ii/

编辑:

有两个闪避功能。一种是线性的,另一种是简单地称为“闪避”。以下是不同混合模式的更广泛列表:

Photoshop如何将两张图片融合在一起?

混合模式公式在此页面上确认:

http://www.pegtop.net/delphi/articles/blendmodes/dodge.htm

...但在这个页面上,他们似乎通过反转公式来得到它:

http://www.simplefilter.de/en/basics/mixmods.html

您可能仍然需要弄清楚特殊情况,并记住“1”实际上是“255”。

于 2012-05-01T10:10:24.473 回答
0

尝试:

// t_component's range is [0...1]
t_component dodge_component(const t_component& a, const t_component& b) {
  // note: saturate and limit to range
  return a / (1.0 - b);
}

t_color dodge_color(const t_color& a, const t_color& b) {
  t_color result;
  for (each component in color_model) {
    result.component[i] = dodge_component(a.component[i], b.component[i]);
  }
  return result;
}
于 2012-05-01T06:06:08.947 回答