javascript - 如何将 CamanJS 过滤器转换为 KineticJS 过滤器?

标签 javascript html 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等价?

最佳答案

CamanJS 和 KineticJS 过滤器的实现方式非常不同。

KineticJS 过滤器一次操作像素数据。

CamanJS 使用增量更改图像的子系统(子系统==this.brightness、this.exposure 等)。

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

为此,您必须重构许多 CamanJS 子系统并将其嵌入到 KineticJS 中。

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

  • 亮度,
  • 曝光,
  • 曲线,
  • 饱和度,
  • Gamma

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

关于javascript - 如何将 CamanJS 过滤器转换为 KineticJS 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27132635/

相关文章:

javascript - 拖动透明背景的图像

html - 如何将 Facebook 像素添加到 Google 的 AMP?

javascript - 为什么 slider 仅适用于两张幻灯片?

JavaScript Img 在提示对话框期间暂停?

javascript - 如何在javascript中缩放(调整大小)图像保持纵横比

javascript - 圈子上的共享地点

javascript - 使用 kinetic js canvas 在保持比例的同时调整图像大小

javascript - 使用 requestAnimationFrame 控制 fps?

javascript - 边界不适用于 JS 游戏中的球

javascript - 仅当 JS 直接链接在 <body> 下方和 </body> 上方时,div 的垂直居中才有效?