HTML5 Live

Sandro Paganotti
Sandro PaganottiFront End Engineer at Facebook
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
HTML5 Live
CAPITOLO QUARTO

PRIMA DEMO
     LAUNCH

LAUNCH DASHBOARD
END

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

Recommended

Alejandro by
AlejandroAlejandro
AlejandroAlejandro Gomez
251 views18 slides
Oop lect 10 by
Oop lect   10Oop lect   10
Oop lect 10Tulgaa Gankhuyag
618 views24 slides
Html5 by
Html5Html5
Html5khalid mansoor
141 views1 slide
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII by
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートIIopenFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートIIAtsushi Tadokoro
11.1K views58 slides
Program project khusus by
Program project khususProgram project khusus
Program project khususkiuntoro
194 views102 slides
openFrameworks addonを利用する ofxControlPanel ofxOpenCv - 多摩美メディアアートII by
openFrameworks addonを利用する ofxControlPanel ofxOpenCv - 多摩美メディアアートIIopenFrameworks addonを利用する ofxControlPanel ofxOpenCv - 多摩美メディアアートII
openFrameworks addonを利用する ofxControlPanel ofxOpenCv - 多摩美メディアアートIIAtsushi Tadokoro
6.2K views63 slides

More Related Content

Viewers also liked

HTML5 for Mobile by
HTML5 for MobileHTML5 for Mobile
HTML5 for MobileCristiano Rastelli
1.4K views125 slides
Corso HTML5. Esempi di App by
Corso HTML5. Esempi di AppCorso HTML5. Esempi di App
Corso HTML5. Esempi di AppTerrelibere Org Edizioni
652 views6 slides
Html5 e css3 nei miei progetti: cosa ho fatto by
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
703 views48 slides
HTML5 e Css3 - 5 | WebMaster & WebDesigner by
HTML5 e Css3 - 5 | WebMaster & WebDesignerHTML5 e Css3 - 5 | WebMaster & WebDesigner
HTML5 e Css3 - 5 | WebMaster & WebDesignerMatteo Magni
654 views40 slides
Html5 based by
Html5 basedHtml5 based
Html5 basedSaverio Menin
2.3K views172 slides
JavaScript Arrays by
JavaScript Arrays JavaScript Arrays
JavaScript Arrays Reem Alattas
2.1K views61 slides

Viewers also liked(11)

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
  • 20. CAPITOLO QUARTO PRIMA DEMO LAUNCH LAUNCH DASHBOARD