2010-09-09 5 views
8

Tôi tự hỏi liệu có thể kết hợp hai hoặc nhiều hình ảnh lại với nhau trên một trang web sử dụng các chế độ hòa trộn như bạn sẽ tìm thấy trong photoshop (lớp phủ, màn hình, làm sáng, vv).Chế độ hòa trộn Photoshop-esque trong các trang web sử dụng CSS hoặc JavaScript?

Tôi biết rằng điều này có thể xảy ra với flash và java, nhưng có thể không có bất kỳ plugin nào tức là với CSS hoặc JavaScript không? Tôi đã thấy một vài ví dụ javascript về hiệu ứng này hoạt động trên hình ảnh tương đối nhỏ, nhưng tôi quan tâm đến việc thực hiện điều này trên hình ảnh có độ phân giải cao ... điều này hoàn toàn là cho mục đích thử nghiệm.

Trả lời

5

tôi đã tạo ra một, nhẹ, thư viện mã nguồn mở riêng cho thực hiện các chế độ pha trộn Photoshop theo phong cách từ bối cảnh Canvas một HTML khác: context-blender. Dưới đây là cách sử dụng mẫu:

// Might be an 'offscreen' canvas 
var over = someCanvas.getContext('2d'); 
var under = anotherCanvas.getContext('2d'); 

over.blendOnto(under, 'screen', {destX:30,destY:15}); 

Xem README để biết thêm thông tin, bao gồm chế độ hòa trộn được hỗ trợ trong phiên bản hiện tại.

+0

Hiệu quả như thế nào trên thư viện này? – Greg

+0

@Greg Tôi nhận được ~ 210fps trên bản sao thẳng của vùng 141x141 và ~ 160fps thực hiện chế độ "khác biệt" (trình diễn kém hơn hiện tại), sử dụng Safari v5. Hiệu suất trên Chrome tốt hơn, Firefox tồi tệ hơn. Chỉ có một tối ưu hóa chính mà tôi có (cố ý) không được thực hiện: ngay bây giờ có một 'chuyển' bên trong một' for' lặp qua các điểm ảnh. Việc giải thích các vòng lặp bên trong mỗi 'trường hợp 'thay vì cung cấp tốc độ tăng 5-10%, nhưng ở mức độ mở rộng xấu, không-DRY của cơ sở mã, nhân đôi tính toán chung cho tất cả các chế độ. – Phrogz

+0

@Greg Thư viện hiện có thể đọc [145 dòng mã] (https://github.com/Phrogz/context-blender/blob/master/context_blender.js) (với khoảng 14 trong số những nhận xét mà tôi thực sự cần để chỉ xóa). – Phrogz