0

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等效项?

4

1 回答 1

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 的图像源。这是有关如何执行此操作的链接:由 CamanJS 修改的 KineticJS 画布

于 2014-11-25T19:10:40.053 回答