byłoby to najbardziej eleganckie rozwiązanie przypuszczam (z source
będąc Ci BitmapData
):
const rc:Number = 1/3, gc:Number = 1/3, bc:Number = 1/3;
source.applyFilter(source.bitmapData, source.bitmapData.rect, new Point(), new ColorMatrixFilter([rc, gc, bc, 0, 0,rc, gc, bc, 0, 0, rc, gc, bc, 0, 0, 0, 0, 0, 1, 0]));
z flash.geom::Point
i flash.filters::ColorMaxtrixFilter
...
ColorMatrixFilter
umożliwia wiele rzeczy, takich jak przesunięcia Hue, colorisation, oświetlenie, zaciemnienie i desaturacji i tak dalej ... inaczej BitmapData::paletteMap
i BitmapData::colorTransform
są dobrym uzupełnieniem ...
prostu chciałem, aby pamiętać, że stosując następujące
const rc:Number = 1/3, gc:Number = 1/2, bc:Number = 1/6;
wygląda trochę bardziej naturalne, ponieważ subiektywnie, #00FF00
jest jaśniejsza niż #FF0000
, który z kolei jest jaśniejsza niż #0000FF
powodzenia wtedy ...;)
greetz
back2dos
To jest właściwe rozwiązanie, +1. – CookieOfFortune
Wydaje mi się pamiętać, że typowa waga kolorów wynosi odpowiednio 30%, 59% i 11% dla R, G i B. Chociaż, jak piszesz, ważenie jest nieco subiektywne, ma korelację z wartościami luminancji kolorów iirc. Twoje ciężary są w tym względzie nieznaczne, ale metoda jest absolutnie poprawna. –
@macke: dzięki, nigdy nie miałem "naukowych" numerów :) – back2dos