CamanJS 过滤器到 Photoshop 曲线
CamanJS Filters to Photoshop Curves
有没有办法获取 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);
});
我尝试使用那些曲线值,但似乎不一样。
有什么见解吗?
谢谢。
主要原因是 camanjs 的 curve() 方法使用贝塞尔曲线,而 Photoshop 使用基数样条或更简单的 Catmull-Rom 样条(通过实际点的样条)。
因此,将贝塞尔曲线控制点转换为基数样条曲线也很复杂,反之亦然。
您可以制作一个映射界面,以便绘制贝塞尔曲线,然后为基数样条曲线提供点,四处移动它们,使它们与贝塞尔曲线制作的曲线紧密匹配,并将这些点用于 Photoshop。我做了一个 cardinal spline implementation here,如果你觉得这可能是解决它的一种方法,可能还有其他人在那里。
但一般来说,您必须在这两种类型之间进行转换。
更新
This code (not JS but C) (FitCurves.c) 可能会也可能不会帮助您进行贝塞尔曲线拟合。 C 和 JS 在语法方面密切相关,因此应该很容易翻译。
希望对您有所帮助。
有没有办法获取 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);
});
我尝试使用那些曲线值,但似乎不一样。
有什么见解吗?
谢谢。
主要原因是 camanjs 的 curve() 方法使用贝塞尔曲线,而 Photoshop 使用基数样条或更简单的 Catmull-Rom 样条(通过实际点的样条)。
因此,将贝塞尔曲线控制点转换为基数样条曲线也很复杂,反之亦然。
您可以制作一个映射界面,以便绘制贝塞尔曲线,然后为基数样条曲线提供点,四处移动它们,使它们与贝塞尔曲线制作的曲线紧密匹配,并将这些点用于 Photoshop。我做了一个 cardinal spline implementation here,如果你觉得这可能是解决它的一种方法,可能还有其他人在那里。
但一般来说,您必须在这两种类型之间进行转换。
更新
This code (not JS but C) (FitCurves.c) 可能会也可能不会帮助您进行贝塞尔曲线拟合。 C 和 JS 在语法方面密切相关,因此应该很容易翻译。
希望对您有所帮助。