2010-09-09 19 views
8

İki veya daha fazla görüntüyü bir web sayfasında bir araya getirip paylaşmayacağınızı merak ediyorum (photoshop (bindirme, ekran, açıklık vb.) Gibi karışım modlarını kullanarak.CSS veya JavaScript'i kullanarak web sayfalarında Photoshop-esque karışım modunu?

Bu tür bir şeyin flaş ve java ile mümkün olduğunu biliyorum, ancak herhangi bir eklenti olmaksızın, yani CSS veya JavaScript ile mümkün mü? Bu efektin birkaç javascript örneğini görüyorum ki, göreceli olarak küçük görüntüler üzerinde çalışıyorum, ancak bunu yüksek çözünürlüklü görüntüler üzerinde yapmakla ilgileniyorum ... bu sadece deneysel amaçlar içindir.

cevap

5

Ayrı, hafif, açık kaynak kitaplığı oluşturduk: context-blender.

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

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

geçerli sürümünde desteklenen karışım modu da dahil, daha fazla bilgi için README bakınız: İşte örnek kullanımı var.

+0

Bu kitaplıktaki etkinlik nedir? – Greg

+0

@Greg Bir 141x141 bölgenin düz bir kopyasında ~ 210fps ve Safari v5 kullanarak "fark" modunu (geçerli kötü performans gösterici) gerçekleştirerek ~ 120 fps alıyorum. Chrome'da performans daha iyi, Firefox daha da kötü. Yaptığım (kasıtlı olarak) bir tek ana optimizasyon var: şu anda piksellerin üzerinde döngü yapmak için bir 'switch' var. Her bir 'kasa' içindeki ilmeklerin patlatılması, bunun yerine,% 5-10'luk bir hız artışı sağlar, ancak kod tabanının çirkin, DRY olmayan bir genişlemesinde, tüm modlarda ortak olan hesapların çoğaltılmasıdır. – Phrogz

+0

@Greg Kütüphane şu anda okunabilir [145 satırlık kod] (https://github.com/Phrogz/context-blender/blob/master/context_blender.js) (gerçekten bunlara ihtiyaç duyduğum yorumlar olmak üzere yaklaşık 14 tanesi) sadece silmek için). – Phrogz

İlgili konular