2010-09-09 7 views
8

Mi chiedo se sia possibile unire due o più immagini insieme in una pagina Web utilizzando i metodi di fusione come quelli che troverete in Photoshop (sovrapposizione, schermo, schiarita, ecc.).Modalità fusione Photoshop-esque nelle pagine Web utilizzando CSS o JavaScript?

So che questo tipo di cose è possibile con flash e java, ma è possibile senza plug-in con CSS o JavaScript? Ho visto alcuni esempi javascript di questo effetto che funzionano su immagini relativamente piccole, ma sono interessato a farlo su immagini ad alta risoluzione ... questo è puramente a scopo sperimentale.

risposta

5

Ho creato un leggero libreria separata,, open-source per eseguire i metodi di fusione in stile Photoshop dal contesto della tela di canapa un HTML ad un altro: context-blender. Ecco l'utilizzo del campione:

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

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

Vedere la README per ulteriori informazioni, compresi i metodi di fusione supportati nella versione corrente.

+0

Qual è l'efficienza di questa libreria? – Greg

+0

@Greg Ottengo ~ 210fps su una copia diretta di un'area 141x141 e ~ 160 fps che eseguono la modalità "differenza" (l'attuale peggiore), utilizzando Safari v5. Le prestazioni su Chrome sono migliori, Firefox è peggio. C'è solo una ottimizzazione principale che ho (intenzionalmente) non fatta: in questo momento c'è un 'switch' dentro un' for' looping sui pixel. L'esplosione dei loop all'interno di ogni "caso" fornisce invece un aumento della velocità del 5-10%, ma a un'espansione brutta, non DRY del codice base, duplicando i calcoli comuni a tutte le modalità. – Phrogz

+0

@Greg La libreria è attualmente leggibile [145 linee di codice] (https://github.com/Phrogz/context-blender/blob/master/context_blender.js) (di cui circa 14 sono commenti di cui ho davvero bisogno per cancellare). – Phrogz