Графика и мультимедия в HTML5. Мультимедия в HTML5 Canvas 3D (WebGL) SVG Video Audio.

Презентация:



Advertisements
Похожие презентации
ИНТЕРАКТИВНОСТЬ В HTML5. ИСТОРИЯ HTML5 2 ПРЕИМУЩЕСТВА HTML5 ПЕРЕД FLASH 3 Открытость платформы Чистая веб-технология Более высокие надёжность, производительность.
Advertisements

Модуль Draw представляет собой инструмент рисования, использующий векторную графику. Он содержит ряд сервисов, позволяющих быстро создавать все виды рисунков.
SVG Докладчик: Дьяченко Василий, мат-мех, группа 345.
Ненавязчивый Unobtrusive JavaScript Сергеев Алексей «Открытые Веб-Технологии»
Кроссбраузерные решения в Рекламной сети Яндекса Юрий Беляков.
Разгони свой сайт Лекция 7: «Ненавязчивый» JavaScript Мациевский Николай 1 / 22 webo.in.
Погружение в HTML5 Гайдар Магдануров Microsoft HTML5 – что это?
VML, SVG, Canvas Вчера, сегодня, завтра.
Презентация к уроку © Составил : Габриков А. А. МУНИЦИПАЛЬНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА 7 г. ИРКУТСКА ИРКУТСК 2009.
Raphics S SVG ector Масштабируемая векторная графика calableV G.
Векторная анимацияВекторная анимация– это анимация векторной графики, выполненная в программе, предназначенной для работы с векторными изображениями -
HTML5 HyperText Markup Language Язык разметки гипертекста.
"С чего начинать, Ваше Величество?" "Начни с начала", важно ответил Король, "и продолжай, пока не дойдешь до конца." Льюис Кэролл, Приключения Алисы в.
Клиентские технологии Silverlight 3, Internet Explorer 8 Гайдар Магдануров t: e:
VML, SVG, Canvas Вперед в прошлое.
Кодирование и обработка графической и мультимидийной информации Выполнили ученики 9б класса Зинов Вячеслав, Лотов Егор, Матков Дмитрий.
Введение в компьютерную графику методы представления графических изображений цвет и методы его описания форматы графических файлов Цель первой.
Разработка игр в HTML5. Опыт портирования Doodle God. Николай Котляров, JoyBits Ltd.
Алгоритмы растровой графики. Представление отрезка в растровой форме.
Web-технологии. Лекция 5. Browser. Что такое Browser? ПО для работы с web-сайтами В общем – интерфейс взаимодействия.
Транксрипт:

Графика и мультимедия в HTML5

Мультимедия в HTML5 Canvas 3D (WebGL) SVG Video Audio

Canvas Canvas (англ. canvas «холст») набор API для создания и управления растровой графикой при помощи JavaScript.

Появление Canvas Придумано Apple в 2004, как компонент в движке WebKit Mac OS для приложений Dashboard и Safari Предложено W3C в качестве стандарта Широко поддерживается современными браузерами

Поддержка Canvas Имитация: через VML ExplorerCanvas, через Flash fxCanvas.ExplorerCanvasfxCanvas

Особенности Canvas Растровый, а не векторный не масштабируется Работает через JavaScript ограниченная доступность Плоская картинка отсутствие содержимого Изменения требуют полной перерисовки Не используются плагины Экспорт в статичный файл

Варинты использования Визуализация данных

Варинты использования Анимированная графика

Варинты использования Веб-приложения

Варинты использования Игры

Canvas. Использование if (Modernizr.canvas) { alert("Будем рисовать!") } else { alert("Canvas не поддерживается!") }

2D контекст отрисовки var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d");

2D контекст отрисовки Конечный автомат Состояние можно сохранить и восстанавливить (save/restore) 1.Установка состояние (цвет, трансформация и т.д.) 2.Рисование (линии, примитивы)

Стандартная система кординат

Canvas API

Прямоугольник ctx.fillStyle = "rgb(65, 60, 50)"; ctx.fillRect(25, 50, 100, 100); ctx.strokeStyle = "rgb(65, 60, 50)"; ctx.strokeRect(130, 500, 40, 70);

Круг ctx.fillStyle = "rgb(65, 60, 50)"; ctx.beginPath(); ctx.arc(100, 100, 30, 0, Math.PI * 2, true); ctx.fill();

Кривые ctx.strokeStyle = "rgb(65, 60, 50)"; ctx.beginPath(); ctx.moveTo(50, 100); ctx.bezierCurveTo(70, 50, 130, 150, 150, 100); ctx.stroke();

Рисование линий ctx.beginPath(); ctx.moveTo(50, 50); ctx.lineTo(100, 100); ctx.stroke();

Изображения var image = new Image; image.onload = function () { context.drawImage(image, x, y); }; image.src = "graffiti.jpg";

Изображения ctx.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh);

Работа с пикселями ctx.createImageData() ctx.getImageData(sx, sy, sw, sh); ctx.putImageData()

Работа с пикселями var imgd = context.getImageData(x, y, width, height); var pix = imgd.data; // Инвертация цвета for (var i = 0, n = pix.length; i < n; i += 4) { pix[i] = pix[i]; pix[i+1] = pix[i+1]; pix[i+2] = pix[i+2]; // i+3 - альфа канал } context.putImageData(imgd, x, y);

Примеры Ambilight Pixelate Video Destruction

Текст ctx.font = 'bold 7em "PT Sans", sans-serif'; ctx.fillStyle = 'rgba(0, 0, 0, 0.5)'; ctx.textAlign = 'center'; ctx.textBaseline = 'top'; ctx.fillText('Ололо', 290, 330);

Наложение (Compositing). ctx.globalAlpha = 0.38; ctx.globalCompositeOperation = "source-over";

Тени (Shadow API) context.shadowOffsetX = 5; context.shadowOffsetY = 5; context.shadowBlur = 4; context.shadowColor = 'rgba(255, 0, 0, 0.5)'; context.fillStyle = '#00f'; context.fillRect(20, 20, 150, 100);

Градиенты var g1 = context.createLinearGradient(sx, sy, dx, dy); g1.addColorStop(0, '#f00'); g1.addColorStop(0.5, '#ff0'); gradient1.addColorStop(1, '#00f'); var g2 = context.createRadialGradient(sx, sy, sr, dx, dy, dr);

Трансформация. ctx.scale(x, y) ctx.rotate(rad) ctx.translate(x, y) ctx.transform/setTransform(a,b,c,d,e,f) y x y x 0

Анимация Нет встроенной поддержки анимации Способы: – setInterval() – requestAnimationFrame()

Достоинства и недостатки Сравнение с flash

Фреймфорки

Ссылки Canvas Cheat Sheet

3D Canvas (WebGL) WebGL – JavaSript API для создания интерактивной 3D графики Спецификация разработана Khronos Group /latest/ /latest/

WebGL

Возник из экспериментов над Canvas Спецификация версии 1.0 была выпущена 3 марта 2011 года Использует контекст HTML5 Canvas Построен на основе OpenGL ES 2.0OpenGL ES Код на WebGL выполняется с помощью видеокарты Игры, 360°-обзоров товаров, трёхмерные графики

WebGL контекст var canvas = document.getElementById("glCanvas"); var gl = canvas.getContext("experimental-webgl"); gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.enable(gl.DEPTH_TEST); gl.depthFunc(gl.LEQUAL); gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);

WebGL

WebGL. Вектор атаки

Поддержка WebGL

Библиотеки SpiderGL Three.js PhiloGL GLGE

SVG SVG (масштабируемая векторная графика) XML-подобный язык для визуального описания векторной графики

SVG Разрабатывается W3C с 1999 года В основу легли языки разметки VML (Microsoft) и PGML (Adobe, IBM)VMLPGML Особенности: – декларативный – векторный масштабируется – текстовый доступен * – поддерживает CSS, обработку событий и анимацию

SVG и Canvas. Область применения

Поддержка SVG

SVG. Пример

Возможности SVG Описание путей (path) – M (англ. moveto переместить) – L (англ. lineto нарисовать линию) – отрезки прямых (H, V), кривые Безье (C, S, Q, T) и дуги (A) Примитивы (многоугольники, окружности и т. п.) Визуальные свойства (окраска, прозрачность, скругление углов и т. д)

Возможности SVG Интерактивность. На каждый элемент можно повесить обработчик событий Анимация – реализована с помощью языка SMIL или CSS TransformSMIL – пример: спиннер, гипножабаспиннергипножаба Скрипты. SVG имеет ту же DOM – пример: Inbox AttackInbox Attack

Ссылки Raphaël - Swiffy (SWF to HTML5) - wiffy/ wiffy/

HTML5 video HTML5 video элемент, включённый в проект спецификации HTML 5, который используется для воспроизведения видеозаписей element.html element.html

HTML5 video (audio) Не нужно никаких дополнительных кодеков, установленных программ или кода Набор воспроизводимых форматов ограничен Спецификация не предоставляет описания, как должны выглядеть элементы управления

Поддержка HTML5 video

HTML5 video. Использование

Видео-форматы Ogg Theora – открытый, разработан Xiph.Org H.264 – лицензируемый стандарт, патентные отчисления за использование, эффективнее по соотношению качество/битрейт WebM (VP8)– открытый, разработан Google

Поддержка форматов видео ogg/theora++-+- H WebM++-+-

Поддержка форматов аудио ogg/vorbis++-+- mp wav++-++ AAC+-+-+

HTML5 Video Атрибуты: – poster – height/width – loop – preload Методы управления – load() – canPlayType() – play() – pause() – addTrack()

Пример var audio = document.getElementsByTagName('audio')[0]; var play = document.getElementsByClassName('play')[0]; play.addEventListener('click',function(e){ var t = e.target; if (audio.paused) { audio.play(); t.innerHTML = 'pause'; } else { audio.pause(); t.innerHTML = 'play'; } e.preventDefault(); });