那位大侠知道:色调、饱和度、亮度、RGB颜色之间的换算关系?(100分)

B

baoling

Unregistered / Unconfirmed
GUEST, unregistred user!
如已知色调和饱和度的值,如何推出RGB颜色和亮度的变化
如此等等。。。
 
呵呵,这个卷起千堆雪tyn最清楚了 问他便是

不过也建议你去google ,yahoo看看。
 
等卷起千堆雪tyn来灌水吧!呵呵!
他总是出题找人做,这次也该他出手了! ^_^乐得轻闲!
 
function HSLtoRGB (H, S, L: double): TColor;
var
M1, M2: double;

function HueToColourValue (Hue: double) : byte;
var
V : double;
begin
if Hue < 0 then
Hue := Hue + 1
else if Hue > 1 then
Hue := Hue - 1;
if 6 * Hue < 1 then
V := M1 + (M2 - M1) * Hue * 6
else if 2 * Hue < 1 then
V := M2
else if 3 * Hue < 2 then
V := M1 + (M2 - M1) * (2/3 - Hue) * 6
else
V := M1;
Result := round (255 * V)
end;
var
R, G, B: byte;
begin
if S = 0 then
begin
R := round (255 * L);
G := R;
B := R
end else begin
if L <= 0.5 then
M2 := L * (1 + S)
else
M2 := L + S - L * S;
M1 := 2 * L - M2;
R := HueToColourValue (H + 1/3);
G := HueToColourValue (H);
B := HueToColourValue (H - 1/3)
end;
Result := RGB(R, G, B)
end;

function HSLRangeToRGB (H, S, L : Integer): TColor;
begin
Result := HSLToRGB (H / (HSLRange-1), S / HSLRange, L / HSLRange)
end;

procedure RGBtoHSL (RGB: TColor; var H, S, L : double);
function Max (a, b : double): double;
begin
if a > b then
Result := a
else
Result := b
end;
function Min (a, b : double): double;
begin
if a < b then
Result := a
else
Result := b
end;
var
R, G, B, D, Cmax, Cmin: double;
begin
R := GetRValue (RGB) / 255;
G := GetGValue (RGB) / 255;
B := GetBValue (RGB) / 255;
Cmax := Max (R, Max (G, B));
Cmin := Min (R, Min (G, B));
L := (Cmax + Cmin) / 2;
if Cmax = Cmin then
begin
H := 0;
S := 0
end else begin
D := Cmax - Cmin;
if L < 0.5 then
S := D / (Cmax + Cmin)
else
S := D / (2 - Cmax - Cmin);
if R = Cmax then
H := (G - B) / D
else if G = Cmax then
H := 2 + (B - R) /D
else
H := 4 + (R - G) / D;
H := H / 6;
if H < 0 then
H := H + 1
end
end;

 
查查PhotopShop的参考手册,肯定有答案。
 
谢谢楼上的朋友,我很想知道一些色彩方面的理论知识,那位能够介绍的更详细些。
我想把几个位图的转换成同一色调,我该怎样做,在改变每个象素点的RGB值时有没有
快一些地算法。
 
to baoling :去你的邮箱接收,货发到。
 
to 卷起千堆雪tyn:
首先表示感谢,等了很久,货虽已发,可我没有收到,发到那个信箱了?
 
难道这个不对么?tbl2000@etang.com
 
卷起千堆雪tyn, 给我也发一份,好吗?
 
我的EMAIL baigh@mail.716.com.cn
 
卷起千堆雪tyn, 给我也发一份,好吗? zhihuali@163.net
 
地址没有错啊,大富翁论坛的邮件通知消息我都收到了,您能不能用别的发信服务器再给
我发一份,谢谢
 
都去接收吧~~~
 
没收到!
 
楼上的朋友,有收到卷起千堆雪tyn的宝贝的给我转发一份吧
谢谢!!!!!!

tbl2000@etang.com
 
去接收~~~气死偶了~~~

竟然发了几次都没有收到~~~

263不行,新浪呢???
 
收到,万分感谢!!
 
//在改变每个象素点的RGB值时有没有快一些地算法。
什么意思?是不是想改变图象中某种颜色的值?
如下即可!
if Bitmap.Canvas.Pixels[i, j] = clRed then
Bitmap.Canvas.Pixels[i, j] := clBlue
 
谢谢 卷起千堆雪tyn 大侠
 
顶部