SlideShare a Scribd company logo
WP konference Praha, 29. 11. 2014 
Optimalizace obrázků v 
(responsivních) šablonách 
Tomáš Hejč 
@taccz 
tomas.hejc@superkoderi.cz 
www.superkoderi.cz
Osnova 
• Motivace 
• Řešení 
• Praxe, použití ve Wordpressu 
• Další tipy
Motivace
Jak pracujeme s obrázky 
• <img src="kometa.jpg" />
Jak pracujeme s obrázky 
• <img src="kometa-1024.jpg" width="1024" 
height="768" />
Wordpress 
• Standardně 4 rozměry: 
– Thumbnail 
– Medium 
– Large 
– Full 
• Jednoduše lze přidávat další velikosti: 
add_image_size('img1024', 1024, 1024, false);
Šablona
Responsivní šablona
Velikosti zařízení
Parametry displeje 
• Retina, 3K, 4K …
Retina ready obrázky 
• obrázek je fyzicky 2x větší 
• do stránky je vložen a atributy zmenšen na 
polovinu 
• plugin: WP Retina 2x 
https://wordpress.org/plugins/wp-retina-2x/
Rychlost připojení 
• Edge 
• 3G 
• 4G 
• LTE 
• WIFI
První nápad – CSS řešení 
.header {background: url(header-small.png)} 
@media (min-width: 800px) { 
.header {background: url(header.png)} 
}
První nápad – HTML řešení 
<img class="on-mobile" 
src="header-small.png" /> 
<img class="on-desktop" 
src="header.png" />
Co tedy potřebujeme vědět? 
vlastnost zná vývojář? zná prohlížeč? 
velikost obrazovky NE ANO 
velikost obrázku 
ve stránce 
ANO NE 
kvalita displeje NE ANO 
rozměry obrázku ANO NE
Řešení
detekce zařízení na serveru 
vs. 
detekce v prohlížeči
Serverová detekce 
• už na serveru známe zařízení 
• můžeme servírovat různé HTML, data apod 
• šetříme data (CDN)
Rozpoznání zařízení 
• analýza user-agenta pomocí regulárního 
výrazu 
• analýza user-agenta na základě databáze 
zařízení
wp_is_mobile() 
• funkce přímo v jádru Wordpressu 
• analýza na základě reguláru 
• mobil ano / ne 
• http://codex.wordpress.org/Function_Reference/wp_is_ 
mobile
wp_is_mobile()
DETECT MOBILE BROWSERS 
http://detectmobilebrowsers.com/ 
• obdoba wp_is_mobile() mimo wordpress
MOBILE DETECT 
http://mobiledetect.net/ 
• analýza na základě databáze zařízení 
• poměrně častá aktualizace databáze 
(cca 1x měsíčně) 
• zdarma
WURFL 
http://www.scientiamobile.com/ 
• rozpoznání na základě databáze zařízení 
• nejznámější a hojně používaný 
• placené / na 5 vlastností zdarma 
• Cloud vs. Server (PHP, .NET, Java)
WURFL - doplňky 
• JS detekce – http://wurfl.io/ 
• WURFL Image Tailor – http://wurfl.io/#wit
Detekce v prohlížeči 
• server nezná nastavení browseru 
• detekce na serveru nemusí být 100%, problém 
s aktualizací databáze
HTML + CSS media queries třídy 
<img class="on-mobile" src="header-small. 
png" /> 
<img class="on-desktop" src="header.png" 
/>
HTML + CSS media queries třídy 
.on-mobile {display: block} 
.on-desktop {display: none} 
@media (min-width: 601px) { 
.on-desktop {display: block} 
.on-mobile {display: none} 
}
HTML + JS + data atributy 
<img 
src="image-small.png" 
data-tablet="image-medium.png" 
data-desktop="image-big.png" 
/> 
Př: http://www.responsejs.com
HTML + JS + data atributy
Picture element 
<img src="foto-320.jpg" 
srcset="foto-1920.jpg 1920w, 
foto-1024.jpg 1024w, 
foto-640.jpg 640w, 
foto-320.jpg 320w" 
sizes="(min-width: 800px) 25vw, 
100vw" 
/>
Prohlížeč ví vše 
vlastnost zná vývojář? zná prohlížeč? 
velikost obrazovky NE ANO 
velikost obrázku 
ve stránce 
ANO ANO (sizes) 
kvalita displeje NE ANO 
rozměry obrázku ANO ANO (srcset)
Art direction
<picture> 
<picture> 
<source media="(min-width: 1200px)" 
srcset="port.jpg 1920w, 
barcelona-all-m.jpg 900w, …"> 
<source media="(min-width: 600px)" 
srcset="port-center.jpg 900w, …"> 
<img src="port-boat.jpg" 
srcset="port-boat.jpg 640w, …"> 
</picture>
Picturefill2 
http://scottjehl.github.io/picturefill/ 
• Polyfill pro <picture> 
• Není ideální: 
– prohlížeče bez JS vidí jen alt 
– některé prohlížeče stáhnout více zdrojů 
– Android 2.3, IE9 – problémy
Praxe 
Wordpress
Přidání velikostí 
• add_image_size( 'thumb-800', 800, 800, false ); 
add_image_size( 'thumb-400', 400, 400, false ); 
• add_filter('image_size_names_choose', 'im_sizes'); 
function im_sizes ($sizes) { 
return array_merge( $sizes, array( 
'thumb-800' => __('Desktop Image'), 
'thumb-400' => __('Mobile Image'), 
) ); 
}
Zpracování obsahu 
• Ručně v šabloně 
• Využít filtry 
– the_content 
– post_gallery 
• Shortcodes
Zpracování přes shortcode 
https://github.com/ractoon/wordpress-picturefill 
• [picture 
img="image-small.png, 
image-small@2x.png 2x"] 
[/picture] 
• [picture 
img="image-small.png, 
image-small@2x.png 2x"] 
[source 
srcset="image-medium.png, 
image-medium@2x.png 2x" 
media="(min-width: 400px)"] 
[/picture]
Plugin - <picture> + Picturefill2 
https://github.com/kylereicks/picturefill.js.wp 
• automaticky projde content, najde img a 
provede nahrazení 
• srcsety se registrují přes 
picturefill_wp_register_srcset() 
• sizes se registrují přes picturefill_wp_register_sizes()
Další tipy na 
optimalizaci obrázků
Compressive images 
• příklad: 
velikost 400×300px 90% kvalita 70kB 
velikost 1024×768px 0% kvalita 27kB 
• http://www.filamentgroup.com/lab/compressi 
ve-images.html
Lazy load
Vektory 
• Iconfont
Vektory 
• SVG
• PNG vs. JPG 
• používejte sprity 
• nastavení serveru (gZIP, headers, cache)
WP konference Praha, 29. 11. 2014 
Děkuji za pozornost 
Tomáš Hejč 
@taccz 
tomas.hejc@superkoderi.cz 
www.superkoderi.cz

More Related Content

Similar to Optimalizace obrázků v (responsivních) šablonách

Kompletní průvodce obrázky | Tomáš Krejčí | 19. 4. 2023 – SUPERKODERS.CZ
Kompletní průvodce obrázky | Tomáš Krejčí | 19. 4. 2023 – SUPERKODERS.CZKompletní průvodce obrázky | Tomáš Krejčí | 19. 4. 2023 – SUPERKODERS.CZ
Kompletní průvodce obrázky | Tomáš Krejčí | 19. 4. 2023 – SUPERKODERS.CZWebScience1
 
Optimalizace webových aplikací
Optimalizace webových aplikacíOptimalizace webových aplikací
Optimalizace webových aplikacíVašek Purchart
 
Hledání příčin pomalého webu a jak to řešit
Hledání příčin pomalého webu a jak to řešitHledání příčin pomalého webu a jak to řešit
Hledání příčin pomalého webu a jak to řešitDesingdev
 
Použití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciPoužití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciMartin Krištof
 
Responzivní webdesign (pro MS Fest)
Responzivní webdesign (pro MS Fest)Responzivní webdesign (pro MS Fest)
Responzivní webdesign (pro MS Fest)Martin Michálek
 
Tomáš Poner a Vladislav Musílek, Nejlepší affiliate pluginy pro WordPress
Tomáš Poner a Vladislav Musílek, Nejlepší affiliate pluginy pro WordPressTomáš Poner a Vladislav Musílek, Nejlepší affiliate pluginy pro WordPress
Tomáš Poner a Vladislav Musílek, Nejlepší affiliate pluginy pro WordPressColpirio.com s.r.o.
 
Pokročilé responzivní obrázky
Pokročilé responzivní obrázkyPokročilé responzivní obrázky
Pokročilé responzivní obrázkyRobin Pokorny
 
Webová prezentace - case study - Ibis interiér
Webová prezentace - case study - Ibis interiérWebová prezentace - case study - Ibis interiér
Webová prezentace - case study - Ibis interiérSun Marketing
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptCtvrtkoncz
 
Webová prezentace - case study - DHL Express (Slovakia)
Webová prezentace - case study - DHL Express (Slovakia)Webová prezentace - case study - DHL Express (Slovakia)
Webová prezentace - case study - DHL Express (Slovakia)Sun Marketing
 

Similar to Optimalizace obrázků v (responsivních) šablonách (20)

Kompletní průvodce obrázky | Tomáš Krejčí | 19. 4. 2023 – SUPERKODERS.CZ
Kompletní průvodce obrázky | Tomáš Krejčí | 19. 4. 2023 – SUPERKODERS.CZKompletní průvodce obrázky | Tomáš Krejčí | 19. 4. 2023 – SUPERKODERS.CZ
Kompletní průvodce obrázky | Tomáš Krejčí | 19. 4. 2023 – SUPERKODERS.CZ
 
Optimalizace webových aplikací
Optimalizace webových aplikacíOptimalizace webových aplikací
Optimalizace webových aplikací
 
Hledání příčin pomalého webu a jak to řešit
Hledání příčin pomalého webu a jak to řešitHledání příčin pomalého webu a jak to řešit
Hledání příčin pomalého webu a jak to řešit
 
Základy internetu
Základy internetuZáklady internetu
Základy internetu
 
TNPW2-2016-03
TNPW2-2016-03TNPW2-2016-03
TNPW2-2016-03
 
TNPW2-2014-03
TNPW2-2014-03TNPW2-2014-03
TNPW2-2014-03
 
TNPW2-2012-03
TNPW2-2012-03TNPW2-2012-03
TNPW2-2012-03
 
Rwd obhajoba
Rwd obhajobaRwd obhajoba
Rwd obhajoba
 
Použití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciPoužití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaci
 
Responzivní webdesign (pro MS Fest)
Responzivní webdesign (pro MS Fest)Responzivní webdesign (pro MS Fest)
Responzivní webdesign (pro MS Fest)
 
Tomáš Poner a Vladislav Musílek, Nejlepší affiliate pluginy pro WordPress
Tomáš Poner a Vladislav Musílek, Nejlepší affiliate pluginy pro WordPressTomáš Poner a Vladislav Musílek, Nejlepší affiliate pluginy pro WordPress
Tomáš Poner a Vladislav Musílek, Nejlepší affiliate pluginy pro WordPress
 
Pokročilé responzivní obrázky
Pokročilé responzivní obrázkyPokročilé responzivní obrázky
Pokročilé responzivní obrázky
 
TNPW2-2013-03
TNPW2-2013-03TNPW2-2013-03
TNPW2-2013-03
 
Joomla! na MS Windows
Joomla! na MS WindowsJoomla! na MS Windows
Joomla! na MS Windows
 
CSS preprocesory
CSS preprocesoryCSS preprocesory
CSS preprocesory
 
Webová prezentace - case study - Ibis interiér
Webová prezentace - case study - Ibis interiérWebová prezentace - case study - Ibis interiér
Webová prezentace - case study - Ibis interiér
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
 
Web na dlani
Web na dlaniWeb na dlani
Web na dlani
 
Webová prezentace - case study - DHL Express (Slovakia)
Webová prezentace - case study - DHL Express (Slovakia)Webová prezentace - case study - DHL Express (Slovakia)
Webová prezentace - case study - DHL Express (Slovakia)
 
Editace šablony & child theme
Editace šablony & child themeEditace šablony & child theme
Editace šablony & child theme
 

More from SUPERKODERS

SVG SUPERWORKFLOW
SVG SUPERWORKFLOWSVG SUPERWORKFLOW
SVG SUPERWORKFLOWSUPERKODERS
 
Proč je <iRozhlas / SUPER>
Proč je <iRozhlas / SUPER>Proč je <iRozhlas / SUPER>
Proč je <iRozhlas / SUPER>SUPERKODERS
 
Jak funguje prohlížeč
Jak funguje prohlížečJak funguje prohlížeč
Jak funguje prohlížečSUPERKODERS
 
Typické chyby responzivních podkladů
Typické chyby responzivních podkladůTypické chyby responzivních podkladů
Typické chyby responzivních podkladůSUPERKODERS
 
Rizika použití WordPressu
Rizika použití WordPressuRizika použití WordPressu
Rizika použití WordPressuSUPERKODERS
 
Užitečné zdroje a nástroje pro tvorbu HTML e-mailů
Užitečné zdroje a nástroje pro tvorbu HTML e-mailůUžitečné zdroje a nástroje pro tvorbu HTML e-mailů
Užitečné zdroje a nástroje pro tvorbu HTML e-mailůSUPERKODERS
 

More from SUPERKODERS (6)

SVG SUPERWORKFLOW
SVG SUPERWORKFLOWSVG SUPERWORKFLOW
SVG SUPERWORKFLOW
 
Proč je <iRozhlas / SUPER>
Proč je <iRozhlas / SUPER>Proč je <iRozhlas / SUPER>
Proč je <iRozhlas / SUPER>
 
Jak funguje prohlížeč
Jak funguje prohlížečJak funguje prohlížeč
Jak funguje prohlížeč
 
Typické chyby responzivních podkladů
Typické chyby responzivních podkladůTypické chyby responzivních podkladů
Typické chyby responzivních podkladů
 
Rizika použití WordPressu
Rizika použití WordPressuRizika použití WordPressu
Rizika použití WordPressu
 
Užitečné zdroje a nástroje pro tvorbu HTML e-mailů
Užitečné zdroje a nástroje pro tvorbu HTML e-mailůUžitečné zdroje a nástroje pro tvorbu HTML e-mailů
Užitečné zdroje a nástroje pro tvorbu HTML e-mailů
 

Optimalizace obrázků v (responsivních) šablonách

  • 1. WP konference Praha, 29. 11. 2014 Optimalizace obrázků v (responsivních) šablonách Tomáš Hejč @taccz tomas.hejc@superkoderi.cz www.superkoderi.cz
  • 2. Osnova • Motivace • Řešení • Praxe, použití ve Wordpressu • Další tipy
  • 4. Jak pracujeme s obrázky • <img src="kometa.jpg" />
  • 5. Jak pracujeme s obrázky • <img src="kometa-1024.jpg" width="1024" height="768" />
  • 6. Wordpress • Standardně 4 rozměry: – Thumbnail – Medium – Large – Full • Jednoduše lze přidávat další velikosti: add_image_size('img1024', 1024, 1024, false);
  • 10. Parametry displeje • Retina, 3K, 4K …
  • 11. Retina ready obrázky • obrázek je fyzicky 2x větší • do stránky je vložen a atributy zmenšen na polovinu • plugin: WP Retina 2x https://wordpress.org/plugins/wp-retina-2x/
  • 12. Rychlost připojení • Edge • 3G • 4G • LTE • WIFI
  • 13. První nápad – CSS řešení .header {background: url(header-small.png)} @media (min-width: 800px) { .header {background: url(header.png)} }
  • 14. První nápad – HTML řešení <img class="on-mobile" src="header-small.png" /> <img class="on-desktop" src="header.png" />
  • 15. Co tedy potřebujeme vědět? vlastnost zná vývojář? zná prohlížeč? velikost obrazovky NE ANO velikost obrázku ve stránce ANO NE kvalita displeje NE ANO rozměry obrázku ANO NE
  • 17. detekce zařízení na serveru vs. detekce v prohlížeči
  • 18. Serverová detekce • už na serveru známe zařízení • můžeme servírovat různé HTML, data apod • šetříme data (CDN)
  • 19. Rozpoznání zařízení • analýza user-agenta pomocí regulárního výrazu • analýza user-agenta na základě databáze zařízení
  • 20. wp_is_mobile() • funkce přímo v jádru Wordpressu • analýza na základě reguláru • mobil ano / ne • http://codex.wordpress.org/Function_Reference/wp_is_ mobile
  • 22. DETECT MOBILE BROWSERS http://detectmobilebrowsers.com/ • obdoba wp_is_mobile() mimo wordpress
  • 23. MOBILE DETECT http://mobiledetect.net/ • analýza na základě databáze zařízení • poměrně častá aktualizace databáze (cca 1x měsíčně) • zdarma
  • 24. WURFL http://www.scientiamobile.com/ • rozpoznání na základě databáze zařízení • nejznámější a hojně používaný • placené / na 5 vlastností zdarma • Cloud vs. Server (PHP, .NET, Java)
  • 25. WURFL - doplňky • JS detekce – http://wurfl.io/ • WURFL Image Tailor – http://wurfl.io/#wit
  • 26. Detekce v prohlížeči • server nezná nastavení browseru • detekce na serveru nemusí být 100%, problém s aktualizací databáze
  • 27. HTML + CSS media queries třídy <img class="on-mobile" src="header-small. png" /> <img class="on-desktop" src="header.png" />
  • 28. HTML + CSS media queries třídy .on-mobile {display: block} .on-desktop {display: none} @media (min-width: 601px) { .on-desktop {display: block} .on-mobile {display: none} }
  • 29. HTML + JS + data atributy <img src="image-small.png" data-tablet="image-medium.png" data-desktop="image-big.png" /> Př: http://www.responsejs.com
  • 30. HTML + JS + data atributy
  • 31. Picture element <img src="foto-320.jpg" srcset="foto-1920.jpg 1920w, foto-1024.jpg 1024w, foto-640.jpg 640w, foto-320.jpg 320w" sizes="(min-width: 800px) 25vw, 100vw" />
  • 32. Prohlížeč ví vše vlastnost zná vývojář? zná prohlížeč? velikost obrazovky NE ANO velikost obrázku ve stránce ANO ANO (sizes) kvalita displeje NE ANO rozměry obrázku ANO ANO (srcset)
  • 34. <picture> <picture> <source media="(min-width: 1200px)" srcset="port.jpg 1920w, barcelona-all-m.jpg 900w, …"> <source media="(min-width: 600px)" srcset="port-center.jpg 900w, …"> <img src="port-boat.jpg" srcset="port-boat.jpg 640w, …"> </picture>
  • 35.
  • 36. Picturefill2 http://scottjehl.github.io/picturefill/ • Polyfill pro <picture> • Není ideální: – prohlížeče bez JS vidí jen alt – některé prohlížeče stáhnout více zdrojů – Android 2.3, IE9 – problémy
  • 38. Přidání velikostí • add_image_size( 'thumb-800', 800, 800, false ); add_image_size( 'thumb-400', 400, 400, false ); • add_filter('image_size_names_choose', 'im_sizes'); function im_sizes ($sizes) { return array_merge( $sizes, array( 'thumb-800' => __('Desktop Image'), 'thumb-400' => __('Mobile Image'), ) ); }
  • 39. Zpracování obsahu • Ručně v šabloně • Využít filtry – the_content – post_gallery • Shortcodes
  • 40. Zpracování přes shortcode https://github.com/ractoon/wordpress-picturefill • [picture img="image-small.png, image-small@2x.png 2x"] [/picture] • [picture img="image-small.png, image-small@2x.png 2x"] [source srcset="image-medium.png, image-medium@2x.png 2x" media="(min-width: 400px)"] [/picture]
  • 41. Plugin - <picture> + Picturefill2 https://github.com/kylereicks/picturefill.js.wp • automaticky projde content, najde img a provede nahrazení • srcsety se registrují přes picturefill_wp_register_srcset() • sizes se registrují přes picturefill_wp_register_sizes()
  • 42. Další tipy na optimalizaci obrázků
  • 43. Compressive images • příklad: velikost 400×300px 90% kvalita 70kB velikost 1024×768px 0% kvalita 27kB • http://www.filamentgroup.com/lab/compressi ve-images.html
  • 47. • PNG vs. JPG • používejte sprity • nastavení serveru (gZIP, headers, cache)
  • 48. WP konference Praha, 29. 11. 2014 Děkuji za pozornost Tomáš Hejč @taccz tomas.hejc@superkoderi.cz www.superkoderi.cz

Editor's Notes

  1. Responsivni v závorkách, prootže se budu věnovat optimalizaci obrázků v šablonách obecně
  2. Proč se tím zabývat?
  3. Pc Mobil Tablet Hodinky Televize
  4. crop mode true false - array (‘left’, ‘top’) medium 300x300 large 640x640
  5. Ale pak přišel responsive – tj. Přizpůsobení obsahu danému zařízení Kdo z vás dělá responstivní šablony?
  6. Ale pak přišel responsive – tj. Přizpůsobení obsahu danému zařízení Kdo z vás dělá responstivní šablony?
  7. WP Retina kamarádí s picture elementem a picturefillem
  8. Popsat usecasy
  9. To je docela fajn ale pokud máme fluidní prvek, musíme dát background image větší než je potřeba, pořád problém s retinou atd.
  10. Tohle je na prd, vyřešili jsme vizuální podobu, ale prohlížeš stahuje oba obrázky co z toho plyne – potřebujeme vědět o zařízení pokud možno co nejvíc
  11. Musíme tedy vyřešit, aby alespoň jeden věděl vše
  12. příklad s McDonaldem CDN, Invia atd.
  13. co je co? ad 1) – pouze řekne zda je to typicky mobil (některé techniky řeknou I tablet) ad 2) řekne informace o zařízení – rozměry, jemnost displeje, ale i co umí má typicky fallback v reguláru
  14. knihovna v PHP existuje port do Wordpressu
  15. profi řešení častá aktualizace databíází – 1x týdně a časteji Device atlas
  16. jako frontendisti máme raději server nikdy nezdná, co je v prohlížeči povoleno: př. drahá data – nechci obrázky, nebo chci jen low resolution
  17. už jsem říkal, prohlížeš stáhne oba obrázky, takže nic moc :-/
  18. už jsem říkal, prohlížeš stáhne oba obrázky, takže nic moc :-/
  19. tohle už je lepší navíc se stahuje ten nejmenší obrázek World press photo – stories of change
  20. lazyload zastupny gif musi tam byt holder s rozmery World press photo – stories of change
  21. Byl někdo na frontendistech v Ostravě? To co tam Robin a Máchal měli ve dvou přednáškách po 20 minutách vám ukážu z rychlíku v 5ti minutách, takže pokud by vás to zajímalo, doporučuji pustit si videa
  22. Musíme tedy vyřešit, aby alespoň jeden věděl vše
  23. v tuto chvíli jste si asi vzpoměli na classy a CSSka
  24. vysvětlit co je polyfill vs .fallback pozor existuje I picturefill1 autor. Scott Jehl
  25. vždy je nutné nejprve naučit wordpress velikosti Pozor na mnoho velikostí!
  26. tvůrci šablon si s tiím můžou dělat co chtějí
  27. Proč se tím zabývat?
  28. výhody vektorů budou vždy super vypadat datová velikost výhoda ikonfontu – podpora, obarrvení SVG – dá se stylovat přijďte na Frontendisty!
  29. nejen pro mapy, SVG – dá se stylovat, dají se dobře navazovat eventy, fallback s ikonou přijďte na Frontendisty!
  30. v přednášce jsem ukázal několik možností, jak se problematika kolem obrázků dá řešit, vyzkoušejte uvidíte. Rád bych, abyste si z přednášky odnesll: Myslete v první řadě na uživatele, nabídněte jim co nejlepší zážitek, co nejlépe a co nejrychleji!