Дмитрий расскажет о:
применении фильтров и эффектов для изображений прямо в браузере;
достоинствах и недостатках Canvas, WebGl, SVG и CSS-фильтров и шейдеров;
неизведанном мире SVG-фильтров, его продуманных до мелочей устоях, синтаксисе и правилах;
возможностях обработки изображений — от простых чёрно-белых картинок до нелинейных искажений и градиентных карт.
В докладе будет минимум скучной теории и максимум живых примеров.
6. Устоявшиеся практики
• Десктопный софт:
• Photoshop
• Photobooth Mac OS X, XnRetro ...
• Мобильные приложения:
• Instagram
• Snapseed, Camera+ и еще 100500 разных...
6
7. Фильтрация изображений в веб
несколько лет назад:
1. Flash
2. Отправляем на сервер,
там фильтруем,
возвращаем обратно на клиент
и все это время ждем, ждем, ждем...
7
9. Способы фильтрации на клиенте
сегодня и в ближайшем будущем:
1. Canvas
2. WebGL
3. CSS-фильтры
4. CSS-шейдеры
5. SVG-фильтры
6. SVG-фильтры для HTML
9
17. Достоинства фильтрации с Canvas
1. IE 9 + и мобильные браузеры.
2. Много готовых решений, библиотек, плагинов.
3. Фильтры могут быть настолько сложными и
нестандартными, насколько у вас хватит
фантазии
. . . и насколько вы разбираетесь в цифровой
обработке изображений :)
17
18. Недостатки фильтрации с Canvas
1. Нельзя отфильтровать картинки с других
доменов (включая поддомены) из-за
ограничений безопасности. Решается
проксированием или переводом в base64.
2. Сложные фильтры это медленная,
блокирующая операция.
Десктопный браузер подтормаживает…
Мобильный браузер серьезно тупит.
18
20. Что это о_O ?
precision mediump float;
varying vec2 position;
uniform sampler2D webcam;
void main() {
vec2 p = position;
vec4 color = texture2D(webcam, p);
color.rgb = 1.0 ‐ color.rgb;
gl_FragColor = color;
}
20
21. Шейдеры
• Шейдер - кусок кода, который описывает
алгоритм обработки каждого пикселя в GPU.
• Достоинство - возможность пользоваться
параллельной архитектурой GPU.
• Бывают векторными и пиксельными (Fragment
Shaders)
• Описываются в синтаксисе GLSL (OpenGL
Shading Language)
21
27. WebGLImageFilter прост в
использовании
var filter = new WebGLImageFilter();
filter.addFilter('hue', 180);
filter.addFilter('negative');
filter.addFilter('blur', 7);
var filteredImage = filter.apply(inputImage);
27
28. Достоинства фильтрации с WebGL
1. Очень, очень, очень быстро.
2. Есть несколько хороших плагинов.
3. Можно использовать готовые шейдеры
написаные на языке GLSL
для OpenGL за последние 14 лет
(начиная c 2001 года)
28
29. Недостатки фильтрации с WebGL
1. Слабая поддержка браузерами.
Chrome, Opera - отлично,
FF, Safari, IE11 - частично,
все остальные - никак.
2. Для нестандартных операций порог входа
достаточно высок.
29
138. Достоинства SVG-фильтров и
почему мы выбрали их
1. Быстрые.
2. Не нужно никаких дополнительных библиотек.
3. Поддержка разветвленных структур.
4. Cупер-возможности, огромная спецификация.
5. Встроенная поддержка анимаций.
6. Возможность фильтрации картинок с любых
доменов.
138
139. Недостатки SVG-фильтров
1. IE10+, встроенный браузер на Android 4.4+
2. Необходимость вкладывать изображение
внуть SVG
139