2010-08-17 16 views
6

Tôi đang tìm một công thức để chuyển đổi chúng.Tính kết quả RGB từ 2 màu, một là trong suốt

tôi biết để chuyển đổi một minh bạch chung nó là

alpha * mới + (1 - alpha) * cũ

tôi có:

Color A : RGB(85, 113, 135) 
Color B : RGB(43, 169, 225) 

Màu A có 90% opacity và là đặt trên đầu trang của Màu B, dẫn đến

Color C : RGB(65, 119, 145) 

Câu hỏi của tôi là, màu C sẽ như thế nào? Nếu tôi thay thế Màu B cho một thứ khác, làm cách nào để có Màu C?

Dưới đây là một ví dụ khác, cùng một cơ sở màu:

Color A : RGB(85, 113, 135) 
Color B : RGB(45, 67, 82) 
-------- 
Color C : RGB(65, 109, 131) 

Đó là những ví dụ làm việc được thực hiện với những hình ảnh - Tôi đang cố gắng đến nay tính toán Màu C còn lại để tôi có thể gán một màu nền.


CẬP NHẬT, vui lòng xem câu trả lời được chấp nhận. Các red trong các ví dụ trên là lạ - câu trả lời được chấp nhận có công thức chính xác cho tất cả các màu sắc, tôi đã thử nghiệm nó trong Photoshop.

+0

Lỗi chính xác trong câu hỏi? –

+0

Bạn lấy ví dụ từ đâu? Chương trình nào đã tạo chúng? Nó có sử dụng bất kỳ loại hiệu chỉnh màu nào không? –

+0

ví dụ từ một trang web mà tôi đang làm việc, photoshop đã tạo ra hình ảnh, nhưng chúng đang được triển khai trên web. –

Trả lời

5

Dường như công thức của bạn chính xác là công thức được sử dụng trong ví dụ của bạn, được tính cho mỗi thành phần và được làm tròn lên.

R_c: = trần (R_a * alpha) + trần (R_b * (1 - alpha))

G_c := ceiling(G_a * alpha) + ceiling (G_b * (1 - alpha)) 
B_c := ceiling(B_a * alpha) + ceiling (B_b * (1 - alpha)) 

Strange, tuy nhiên, các thành phần R không xuất hiện để làm theo các quy tắc. Tôi có xu hướng tự hỏi tại sao.

+0

'(85 * 0.9) = 77' (R-a * alpha) cao hơn 65, tôi có đang làm gì đó không? –

+0

@ Kerry: Tôi không chắc chắn. Tôi đã viết một chương trình nhỏ để kiểm tra phương trình và quan sát thấy rằng trong trường hợp thử nghiệm của bạn, các giá trị xanh lá cây và xanh dương gắn liền với công thức, nhưng R thì không. – kbrimington

+0

Giải pháp của bạn là chính xác - Tôi đã kiểm tra nó trong Photoshop, và nó hoạt động tốt. Nó phải làm với Firefox bằng cách nào đó. –

Các vấn đề liên quan