如何将CamanJS滤波器转换为KineticJS滤波器?

时间:2014-11-25 17:07:47

标签: javascript html5 kineticjs camanjs

CamanJS给出以下过滤器:

Caman.Filter.register("lomo", function(vignette) {
    if (vignette == null) {
      vignette = true;
    }
    this.brightness(15);
    this.exposure(15);
    this.curves('rgb', [0, 0], [200, 0], [155, 255], [255, 255]);
    this.saturation(-20);
    this.gamma(1.8);
    if (vignette) {
      this.vignette("50%", 60);
    }
    return this.brightness(5);
  });

如何将此过滤器转换为KineticJS等效内容?

1 个答案:

答案 0 :(得分:1)

CamanJS和KineticJS过滤器的实现方式截然不同。

KineticJS滤镜一次操作像素数据。

CamanJS使用以递增方式更改图像的子系统(子系统== this.brightness,this.exposure等)。

因此,没有简单的方法将CamanJS过滤器转换为KineticJS过滤器

要做到这一点,你必须重构并将许多CamanJS子系统嵌入到KineticJS中。

你可以这样做,因为CamanJS和KineticJS都是自由许可的开源,但这意味着重构并在CamanJSs中至少将以下子系统(及其依赖项)添加到KineticJS中:https://github.com/meltingice/CamanJS/blob/master/dist/caman.full.js

  • 亮度,
  • 曝光,
  • 曲线,
  • 饱和度,
  • 伽马

也许更好的想法是在内存画布上使用CamanJS应用过滤器。然后你可以使用内存中的画布作为Kinetic.Image的图像源。以下是有关如何执行此操作的链接:KineticJS canvas modified by CamanJS