0

有没有办法获得 CamanJS 滤镜的 photoshop 曲线?

例如:

Caman.Filter.register("hemingway", function() {
this.greyscale();
this.contrast(10);
this.gamma(0.9);
this.newLayer(function() {
  this.setBlendingMode("multiply");
  this.opacity(40);
  this.copyParent();
  this.filter.exposure(15);
  this.filter.contrast(15);
  return this.filter.channels({
    green: 10,
    red: 5
  });
});
this.sepia(30);
this.curves('rgb', [0, 10], [120, 90], [180, 200], [235, 255]);
this.channels({
  red: 5,
  green: -2
});
return this.exposure(15);
});

我尝试使用这些曲线值,但似乎不一样。

有什么见解吗?

谢谢你。

4

1 回答 1

1

主要原因是 camanjs 使用 Bezier 曲线作为它的 curve() 方法,而 Photoshop 使用类似于 Cardinal 样条或更简单的 Catmull-Rom 样条(通过实际点的样条)。

因此,将贝塞尔控制点转换为基数样条也很复杂,反之亦然。

您可以制作一个映射界面,以便您可以绘制贝塞尔曲线,然后为基数样条提供点,移动它们以使它们与贝塞尔曲线绘制的曲线紧密匹配,并将其用于 Photoshop。我在这里做了一个基本样条实现,如果你觉得这可能是解决它的一种方法,可能还有其他的。

但总的来说,您必须在这两种类型之间进行转换。

更新

此代码(不是 JS 而是 C)(FitCurves.c)可能会也可能不会帮助您对 Bezier 进行曲线拟合。C 和 JS 在语法方面密切相关,因此应该很容易翻译。

希望这可以帮助。

于 2015-02-18T05:22:42.230 回答