2009-08-23 7 views

Trả lời

17

Bạn có thể chuyển đổi thành HSV (sử dụng công thức từ wikipedia here) Sau đó tăng V trước, sau đó chuyển đổi lại, với công thức từ thấp hơn trên cùng một trang.

+0

Hoặc sử dụng công cụ chuyển đổi trực tuyến tại 'http: // www.rapidtables.com/convert/color/rgb-to-hsv.htm'. Bộ chuyển đổi nghịch đảo cũng ở đó. Hãy nhớ rằng - đó là 'Giá trị', phần thứ ba của HSV tăng lên. Đối với tôi, cái đầu tiên có vẻ tự nhiên để sử dụng. –

-1

Cũng thấy như màu chỉ là 3 byte r/g/b những gì bạn có thể làm là chuyển đổi từng byte thành int (0-255) và tăng từng byte theo cùng một số tùy ý. Kết thúc bằng cách chuyển đổi từng byte trở lại hex. Ví dụ:

Bắt đầu với màu: #224466

Converted để ints thats r = 34, g = 68b = 102

Tăng bởi một số tùy ý (ví dụ 60) bạn sẽ có được r = 94, g = 128b = 162

Chuyển đổi trở lại thành hex cung cấp cho bạn: #5E80A2

Lưu ý giới hạn trên cùng là 255 (màu trắng) và dưới cùng là 0 (màu đen)

EDIT: Vì Mark chỉ ra một lỗ hổng với điều này. Nó có thể được cố định bởi một quy tắc bổ sung: Nếu giá trị ban đầu bằng 0 thì không thay đổi nó;)

+5

Điều đó sẽ thay đổi màu sắc, imo. – ChrisW

+0

Để mở rộng nhận xét của ChrisW, hãy tưởng tượng một màu # 800000, màu đỏ đậm nhưng dữ dội. Làm sáng nó theo cách này sẽ dẫn đến # ff7f7f, gần màu hồng hơn màu đỏ. –

+1

Có 16 triệu màu trong gam màu đó. Thay đổi * bất kỳ * giá trị nào thay đổi "màu". Tôi nghĩ rằng điều đó có thể có nghĩa là nó thay đổi tỷ lệ r/g/b, mà chỉ là một trục tùy ý cho một chiều "màu" duy nhất. – RBarryYoung

8

Câu trả lời tiêu chuẩn là chuyển đổi sang một không gian màu khác có độ sáng là một trục, sau đó điều chỉnh giá trị đó trực tiếp. Tôi không thích câu trả lời đó, bởi vì nó không cho bạn biết những gì bạn sẽ nhận được khi bạn vượt quá gam màu không gian.

Nếu sáng hơn bạn có nghĩa là dữ dội hơn, bạn chỉ có thể nhân mỗi giá trị R, G, B với cùng giá trị, trong đó giá trị> 1. Ví dụ, để làm cho nó sáng hơn 20%, nhân mỗi giá trị 1,2 .

Nếu bất kỳ giá trị kết quả nào lớn hơn 255, bạn đã vượt quá giới hạn của gam màu RGB. Có lẽ điều tốt nhất để làm trong trường hợp đó là mang màu gần hơn với màu trắng, vì vậy nó nhẹ hơn nhưng ít bão hòa hoặc cường độ cao. Hãy lấy ví dụ về RGB bắt đầu (50,192,240) mà bạn muốn làm cho sáng hơn 20%. Kết quả là (60,230,288) - màu đỏ và xanh lá cây nằm trong giới hạn, nhưng màu xanh quá sáng và đã tràn. Lấy phần dư thừa và phân phối nó cho các màu khác bằng nhau - 288-255 là 33, vì vậy thêm 16,5 vào màu đỏ và xanh lục; làm tròn cho bạn kết quả (77.247.255).

+0

Cảm ơn bạn đã đưa sự cố này đến sự chú ý của tôi. Thậm chí không nhận thức được nó. –

+0

Điều gì về ánh xạ [0,255] đến [o, inf), nhân, và sau đó ánh xạ trở lại [0,255]? Điều đó sẽ tránh được vấn đề gam màu, nhưng tôi đoán bạn sẽ nhận được kết quả khác nhau với màu sắc và độ bão hòa tùy thuộc vào bản đồ bạn đã sử dụng ... – naught101

+0

@ naught101, điều đó sẽ giống như chỉ việc kẹp kết quả đến 255. Đó là khả thi chiến lược, nhưng tôi nghĩ rằng tôi là tốt hơn. Bên cạnh đó, làm thế nào để bạn quy mô đến vô cùng? –