SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
WOW!
 HTML5 LIVE!
CAPITOLO PRIMO

VIDEO + CANVAS

    Production Ready
void drawImage(in HTMLVideoElement image,
in double dx, in double dy, in optional
double dw, in double dh);

 void drawImage(in HTMLVideoElement image,
in double sx, in double sy, in double sw,
in double sh, in double dx, in double dy,
in double dw, in double dh);
CAPITOLO PRIMO

PRIMA DEMO

   LAUNCH
CAPITOLO PRIMO

    UN’EVOLUZIONE
disegnaCanvas = function(video, context){
    if(video.paused || video.ended) return false;
    context.drawImage(video,0,0);
    context.drawImage(video,
        125, 98, 200, 60,
        0 , 98, 450, 108
    );
    setTimeout(function(){disegnaCanvas(video, context)},0);
}
CAPITOLO PRIMO

SECONDA DEMO

    LAUNCH
CAPITOLO SECONDO

VIDEO + CANVAS
   + CANVAS

    Production Ready
ImageData getImageData
  (in double sx, in
 double sy, in double
  sw, in double sh);
putImageData



CANVAS        getImageData


CANVAS        drawImage
 (NASCOSTO)



 VIDEO
decomposizioneColori = function(video, context,
context_nascosto, colori){
     if(video.paused || video.ended) return false;
     context_nascosto.drawImage(video,0,0);
     var fotogramma = context_nascosto.getImageData(0,0,
         context_nascosto.canvas.width,context_nascosto.canvas.height);
     var fotogramma_data = fotogramma.data;
    for(var i=0; i < fotogramma_data.length; i+=4){
     var rosso = colori.rosso.checked;
      if (!rosso) fotogramma_data[i ] = 0;
     var verde = colori.verde.checked;
     var blu   = colori.blu.checked;
      if (!verde) fotogramma_data[i+1] = 0;
     for(var i=0; i < fotogramma_data.length; i+=4){
         if (!rosso) fotogramma_data[i ] = 0;
      if (!blu ) fotogramma_data[i+2] = 0;
         if (!verde) fotogramma_data[i+1] = 0;
         if (!blu ) fotogramma_data[i+2] = 0;
    }}
     fotogramma.data = fotogramma_data;
     context.putImageData(fotogramma,0,0);
     setTimeout(function(){
         decomposizioneColori(video, context, context_nascosto, colori)
     },0);
 }
CAPITOLO SECONDO

PRIMA DEMO

    LAUNCH
CANVAS


CANVAS
(NASCOSTO)



VIDEO
(NASCOSTO)
CAPITOLO SECONDO

SECONDA DEMO
   Potenziali problemi di performance




          LAUNCH
CAPITOLO TERZO

 CANVAS +
WEBSTORAGE

  Production Ready
WEBSTORAGE

      localStorage.setItem(...)
                      data:image/
png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAADICAYAAACZBDir
         AAAgAElEQVR4Aey9B5yl2VmfeW7dyqmrK...

          canvas.toDataURL(...)
salvaImmagine = function(evento){
   var canvas = document.querySelector('canvas');
   localStorage.setItem('screenshot_' + localStorage.length,
      canvas.toDataURL()
   );
}

caricaLaGallery = function(evento){
    for(var x = 0; x < localStorage.length; x++)
        document.querySelector('div.screen_shots'
            ).insertAdjacentHTML('afterBegin',
            "<img src='" + localStorage.getItem(localStorage.key(x)) + "'>"
        );
}
CAPITOLO TERZO

    PRIMA DEMO
        Potenziali problemi di performance




LAUNCH MIXER               LAUNCH GALLERY
CAPITOLO QUARTO

  SHARED
WEBWORKERS
    Tratta dal progetto guida
CAPITOLO QUARTO

PRIMA DEMO
     LAUNCH

LAUNCH DASHBOARD
END

GRAZIE
sandro.paganotti@wavegroup.it
http://www.sandropaganotti.com

Más contenido relacionado

Destacado

Html5 e css3 nei miei progetti: cosa ho fatto
Html5 e css3 nei miei progetti: cosa ho fattoHtml5 e css3 nei miei progetti: cosa ho fatto
Html5 e css3 nei miei progetti: cosa ho fattoRocco Passaro
 
HTML5 e Css3 - 5 | WebMaster & WebDesigner
HTML5 e Css3 - 5 | WebMaster & WebDesignerHTML5 e Css3 - 5 | WebMaster & WebDesigner
HTML5 e Css3 - 5 | WebMaster & WebDesignerMatteo Magni
 
JavaScript Arrays
JavaScript Arrays JavaScript Arrays
JavaScript Arrays Reem Alattas
 
Html 5: una breve guida!
Html 5: una breve guida!Html 5: una breve guida!
Html 5: una breve guida!Enrico Mainero
 
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco CasarioHTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco CasarioCodemotion
 
Guida introduttiva al codice HTML
Guida introduttiva al codice HTMLGuida introduttiva al codice HTML
Guida introduttiva al codice HTMLEnrico Mainero
 

Destacado (11)

HTML5 for Mobile
HTML5 for MobileHTML5 for Mobile
HTML5 for Mobile
 
Corso HTML5. Esempi di App
Corso HTML5. Esempi di AppCorso HTML5. Esempi di App
Corso HTML5. Esempi di App
 
Html5 e css3 nei miei progetti: cosa ho fatto
Html5 e css3 nei miei progetti: cosa ho fattoHtml5 e css3 nei miei progetti: cosa ho fatto
Html5 e css3 nei miei progetti: cosa ho fatto
 
HTML5 e Css3 - 5 | WebMaster & WebDesigner
HTML5 e Css3 - 5 | WebMaster & WebDesignerHTML5 e Css3 - 5 | WebMaster & WebDesigner
HTML5 e Css3 - 5 | WebMaster & WebDesigner
 
Html5 based
Html5 basedHtml5 based
Html5 based
 
JavaScript Arrays
JavaScript Arrays JavaScript Arrays
JavaScript Arrays
 
Html 5: una breve guida!
Html 5: una breve guida!Html 5: una breve guida!
Html 5: una breve guida!
 
Html5
Html5Html5
Html5
 
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco CasarioHTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
 
Html5 - Un anno dopo
Html5 - Un anno dopoHtml5 - Un anno dopo
Html5 - Un anno dopo
 
Guida introduttiva al codice HTML
Guida introduttiva al codice HTMLGuida introduttiva al codice HTML
Guida introduttiva al codice HTML
 

HTML5 Live

  • 2. CAPITOLO PRIMO VIDEO + CANVAS Production Ready
  • 3. void drawImage(in HTMLVideoElement image, in double dx, in double dy, in optional double dw, in double dh); void drawImage(in HTMLVideoElement image, in double sx, in double sy, in double sw, in double sh, in double dx, in double dy, in double dw, in double dh);
  • 5. CAPITOLO PRIMO UN’EVOLUZIONE disegnaCanvas = function(video, context){ if(video.paused || video.ended) return false; context.drawImage(video,0,0); context.drawImage(video, 125, 98, 200, 60, 0 , 98, 450, 108 ); setTimeout(function(){disegnaCanvas(video, context)},0); }
  • 7. CAPITOLO SECONDO VIDEO + CANVAS + CANVAS Production Ready
  • 8. ImageData getImageData (in double sx, in double sy, in double sw, in double sh);
  • 9. putImageData CANVAS getImageData CANVAS drawImage (NASCOSTO) VIDEO
  • 10. decomposizioneColori = function(video, context, context_nascosto, colori){ if(video.paused || video.ended) return false; context_nascosto.drawImage(video,0,0); var fotogramma = context_nascosto.getImageData(0,0, context_nascosto.canvas.width,context_nascosto.canvas.height); var fotogramma_data = fotogramma.data; for(var i=0; i < fotogramma_data.length; i+=4){ var rosso = colori.rosso.checked; if (!rosso) fotogramma_data[i ] = 0; var verde = colori.verde.checked; var blu = colori.blu.checked; if (!verde) fotogramma_data[i+1] = 0; for(var i=0; i < fotogramma_data.length; i+=4){ if (!rosso) fotogramma_data[i ] = 0; if (!blu ) fotogramma_data[i+2] = 0; if (!verde) fotogramma_data[i+1] = 0; if (!blu ) fotogramma_data[i+2] = 0; }} fotogramma.data = fotogramma_data; context.putImageData(fotogramma,0,0); setTimeout(function(){ decomposizioneColori(video, context, context_nascosto, colori) },0); }
  • 13. CAPITOLO SECONDO SECONDA DEMO Potenziali problemi di performance LAUNCH
  • 14. CAPITOLO TERZO CANVAS + WEBSTORAGE Production Ready
  • 15. WEBSTORAGE localStorage.setItem(...) data:image/ png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAADICAYAAACZBDir AAAgAElEQVR4Aey9B5yl2VmfeW7dyqmrK... canvas.toDataURL(...)
  • 16. salvaImmagine = function(evento){ var canvas = document.querySelector('canvas'); localStorage.setItem('screenshot_' + localStorage.length, canvas.toDataURL() ); } caricaLaGallery = function(evento){ for(var x = 0; x < localStorage.length; x++) document.querySelector('div.screen_shots' ).insertAdjacentHTML('afterBegin', "<img src='" + localStorage.getItem(localStorage.key(x)) + "'>" ); }
  • 17. CAPITOLO TERZO PRIMA DEMO Potenziali problemi di performance LAUNCH MIXER LAUNCH GALLERY
  • 18. CAPITOLO QUARTO SHARED WEBWORKERS Tratta dal progetto guida
  • 19.
  • 20. CAPITOLO QUARTO PRIMA DEMO LAUNCH LAUNCH DASHBOARD