0

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

4

1 回答 1

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;
于 2013-07-25T21:10:47.783 回答