Actionscript:ColorMatrixFilter for Photoshop的亮度调整?



我有一张黑白照片,我需要对它进行一些调整-我需要增加它的"可见性"(它太灰了,我需要让它更暗)。有人知道如何在AS3中重现Photoshop的亮度调整吗?请注意,这与调整Flash中的亮度不同。区别在于:

  • 在PS中:亮度只调整与白色不同颜色的像素。它对白色像素没有任何作用,所以白色像素实际上保持白色
  • 在PS中:亮度调整所有像素,因此它也会影响白色像素。降低亮度会使所有图像变暗;这对我来说是不可用的,这正是Flash所做的(尽管它在那里被称为"亮度")

我可以用这个矩阵重现Flash的亮度:

var m:Array = new Array();
m = m.concat([1, 0, 0, 0, value]);  // red
m = m.concat([0, 1, 0, 0, value]);  // green
m = m.concat([0, 0, 1, 0, value]);  // blue
m = m.concat([0, 0, 0, 1, 0]);      // alpha
new ColorMatrixFilter(m);

然而,这正是效果不佳的地方,因为它将所有图像设置为较暗,包括白色部分。

有什么想法可以重现PS的亮度设置吗?或者任何其他矩阵,实际上保持白色/浅色像素亮,同时使深色像素变暗?非常感谢。

我怀疑这是否准确复制了Photoshop的"亮度"(更像是调整对比度),但你可以尝试缩放RGB值,然后调整它们,使白色保持白色:

var scaling:Number = 4;
var adjustment:Number = 255 * (1 - scaling);
var m:Array = new Array();
m = m.concat([scaling, 0, 0, 0, adjustment]);  // red
m = m.concat([0, scaling, 0, 0, adjustment]);  // green
m = m.concat([0, 0, scaling, 0, adjustment]);  // blue
m = m.concat([0, 0, 0, 1, 0]);      // alpha
new ColorMatrixFilter(m);

如果你想要一个更传统的对比度,调整将是:

var value:Number = 255 * (1 - scaling) * 0.5;

最新更新