Hier was ich immer genommen habe:
Delphi-Quellcode:
uses WinApi.Windows;
type
TColorHelper =
record helper
for Vcl.Graphics.TColor
public function getPerceptiveLuminance(): Single;
end;
function TColorHelper.getPerceptiveLuminance(): Single;
begin
Result :=
// Nach https://en.wikipedia.org/w/index.php?title=Relative_luminance&oldid=634803879
GetRValue(self) * 0.2126
+ GetGValue(self) * 0.7152
+ GetBValue(self) * 0.0722;
end;
Wenn es auf Geschwindigkeit ankommt kann man das sogar mit extrem wenigen Integer-Operationen abbilden:
http://stackoverflow.com/a/596241