Actionscript:ColorMatrixFilter用于Photoshop的亮度调整?

时间:2013-07-25 15:36:23

标签: actionscript-3 colors photoshop brightness colormatrixfilter

我有一个B / W图片,我需要对它进行一些调整 - 我需要增加它的“可见性”(它太灰了,我需要让它变暗)。有人知道如何在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的brigthness设置?或者任何其他矩阵实际上保持白/亮像素亮,同时使较暗像素变暗?谢谢!

1 个答案:

答案 0 :(得分:0)

我怀疑这会完全复制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;