Actionscript: ColorMatrixFilter для регулировки яркости Photoshop?

У меня есть черно-белое изображение, и мне нужно внести некоторые коррективы в него - мне нужно увеличить его «видимость» (оно слишком серое, мне нужно сделать его темнее). Кто-нибудь знает, как воспроизвести настройку яркости Photoshop в AS3? Обратите внимание, что это НЕ то же самое, что настройка яркости во 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? Или любая другая матрица, которая на самом деле сохраняет светлыми белые/светлые пиксели и затемняет более темные? Спасибо!


person Fygo    schedule 25.07.2013    source источник


Ответы (1)


Я сомневаюсь, что это точно воспроизводит «яркость» 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;
person David Mear    schedule 25.07.2013