SVG - векторный Веб

На прошлой неделе компания "Майкрософт" с помпой представила свой новый браузер IE 9, в котором была заявлена поддержка графического формата SVG. Таким образом, после многих лет ожидания векторный формат SVG получил полное признание практически всех разработчиков браузеров. Его давно в той или иной мере поддерживают остальные браузеры - Opera, Firefox, Chrome. Поэтому давайте в сей исторический момент познакомимся с этим форматом поближе.


Возвращение в Веб

Формат векторных изображений SVG был разработан Консорциумом W3С более десяти лет назад - в 1999 году. Консорциум W3C - это некоммерческая организация, занимающаяся разработкой открытых стандартов, например, HTML и XML.

Несмотря на то, что векторные изображения давно представляют интерес для веб-дизайнеров, этот формат никак не мог завоевать массовое признание. С одной стороны, с 1996 года уже приобрела популярность коммерческая технология векторной анимации Flash. С другой стороны, "Майкрософт", контролировавшая на тот момент практически весь рынок браузеров, не обращала никакого внимания на этот свободный векторный формат.

Но не получая признания в Веб, SVG нашёл пристанище у полиграфистов и стал одним из основных форматов в таких графических пакетах, как Adobe Illustrator и CorelDRAW. Также SVG полюбился различным свободным проектам, в частности, OpenDesktop, под чьим крылом находятся проекты Gnome и KDE. И линуксоиды теперь на своих рабочих столах могут созерцать векторные иконки именно в этом формате.

 

Время шло, альтернативные браузеры потихоньку отвоёвывали у Internet Explorer место под солнцем, и все они в той или иной мере поддерживали SVG. Наиболее полной поддержкой этого формата сейчас может похвастать норвежский браузер Opera 10.50. И вот, наконец, сдались и в Редмонде, объявив полную поддержку SVG в грядущем IE9.

Трудно говорить о реальной мотивации "Майкрософт" в отношении SVG. Возможно, софтверный гигант вспомнил, что SVG - это XML-формат, а "Майкрософт" ведь любит XML. Но, что бы там ни было, SVG возвращается туда, где его настоящее место, - и это Всемирная Паутина.


Картинка - это текст

SVG (Scalable Vector Graphics) - это масштабируемая векторная графика, основанная на текстовой разметке XML. Другими словами, если растровая графика форматов JPEG, GIF, PNG - это матрицы пикселов, то содержание векторного SVG описывается простым текстом. И, соответственно, такую картинку можно открыть для редактирования в любом простом текстовом редакторе, например, Notepad.

Изображение в векторных форматах формируют не пикселы, а геометрические примитивы - линии, круги, треугольники, а также текст. По сути, векторный рисунок - это текстовой список всех геометрических фигур, а также их атрибутов, что в совокупности составляют векторное изображение. Вот так, для примера, может выглядеть код картинки чёрного квадрата Малевича.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
 xmlns:xlink="http://www.w3.org/1999/xlink"
 xmlns="http://www.w3.org/2000/svg"
 width="640" height="480">
<rect fill="#000000" id="svg_2" height="200"
 width="200" y="100" x="209"/>
</svg>

Как видите, формат очень похож на HTML. Для просмотра можно сохранить этот текстовой файл с расширением svg и открыть его в любом современном браузере. Непосредственно в содержание веб-страницы изображения SVG внедряются при помощи тега <object>.

К возможностям SVG относится и анимация. В данном формате анимация может осуществляться с помощью языка SMIL (Synchronized Multimedia Integration Language), разработанного также консорциумом W3C. Но также возможна анимация и посредством скриптовых языков на основе спецификации ECMAScript. То есть геометрическими примитивами можно управлять с помощью JavaScript.

В SVG документ можно вставлять и другие элементы. Например, можно вставить PNG, GIF или JPG-картинку.


Возможности и недостатки

Какие же основные преимущества и недостатки этого формата, по сравнению с растровыми-пиксельными?

Главная фишка векторных форматов - это абсолютная масштабируемость. То есть векторное изображение можно уменьшать или увеличивать сколько угодно, и искажений изображения не будет. Причём при масштабировании не будет изменяться и размер файла векторного изображения. А вот масштабирование растрового изображения на 200-300% и более приводит к появлению заметных искажений и артефактов, а также значительному изменению размеров конечного файла.

Так как SVG текстовой формат, такие картинки легко индексируются поисковыми системами.

Элементы SVG интегрируются непосредственно в объектную модель веб-страницы DOM. А это даёт широкие возможности по динамическому изменению элементов картинки и их атрибутов через JavaScript.

Но следует учитывать, что SVG-изображения - это рисунки и только рисунки. А вот конвертировать фотографии в векторный формат теоретически можно, но на практике лучше этого не делать, если не стоят какие-то специфические эстетические задачи. Векторные форматы совершенно не подходят для фотографий.

К тому же "тяжёлые" SVG-картинки с большим количеством элементов могут потребовать значительных вычислительных ресурсов. Ведь такой уж принципиальной разницы между рендерингом 2D и 3D нет.


Кого "убьет" SVG?

Естественно, бурно обсуждается вопрос, какие технологии или форматы могут быть вытеснены из веб-разработок с приходом SVG. Почему-то считается, что SVG - это "убивец" Flash, что не совсем верно.

Векторные форматы как нельзя лучше подходят для декоративных графических элементов на веб-страницах - это иконки, стрелочки, логотипы и прочая графическая ерунда, которая служит для украшательства веб-сайта. В декоративной графике используются форматы GIF и PNG. И вот их то SVG очень даже потеснит. Масштабируемость и интегрированность в веб-страницу делает SVG самым предпочтительным вариантом для декоративной графики.

Формат SVG, конечно же, значительно лучше подходит для задач анимации, чем GIF-анимация.

Что касается иллюстративной, содержательной графики, то формат SVG отлично справится с графиками, диаграммами, чертежами, схемами, географическими картами, просто рисунками. И в области иллюстраций, скорее всего, придётся потесниться формату PNG.

А вот фотографические изображения, как мы уже говорили выше, это то, для чего SVG совершенно не предназначен, поэтому формату JPG ничего не грозит.

Говоря же о Flash, следует учитывать, что эта технология давно перешагнула рамки векторного формата и представляет собой настоящую мультимедийную платформу. Поэтому, возможно, SVG и заменит простую Flash-анимацию, но что-то более навороченное, что-то на уровне мультиков "Масяня", на SVG в ближайшее время вряд ли появится. Так что разговоры о скоропостижной смерти Flash мне кажутся немного преждевременными.

Кстати, следует помнить и о технологии Canvas из будущего стандарта HTML 5, который тоже предназначен для формирования изображений при помощи функций JavaScript и который может использоваться для тех же целей, что и SVG, и Flash, и даже Silverlight. Неудивительно, что о его поддержке "Майкрософт" молчит.


Программы для работы

Так как SVG является текстовым форматом, то редактировать векторные картинки можно даже в "Блокноте". Но можно - не значит нужно. Есть более удобные программы.

Во-первых, это коммерческие тяжеловесы Adobe Illustrator и CorelDRAW. Существуют и свободные векторные графические редакторы sK1, Ikscape. Для офисных нужд подойдёт OpenOffice Draw.

Для несложных векторных картинок или для простого знакомства с форматом SVG я бы предложил посмотреть в сторону веб-приложения SVG-Edit (code.google.com/p/svg-edit), которое распространяется в виде расширения для Firefox или виджета Opera и использует только JS, HTML, CSS и SVG. Работает это веб-приложение в офлайновом режиме и не требует подключения к Интернету.

Несмотря на простоту, в SVG-Edit реализована поддержка растровых изображений, группировка элементов, масштабирование, слои, кривые, смена фона и многое другое. Так что для начала SVG-Edit - самое то.


Стандарты

И в заключение несколько слов о текущем состоянии этого стандарта. Разработка спецификации SVG по-прежнему продолжается. В настоящее время рабочим вариантом считается версия 1.1. Также для мобильных устройств предусмотрены спецификации SVG Tiny и SVG Basic.

Что же касается уровня поддержки в браузерах, то наиболее близко соответствует стандартам норвежский браузер Opera последней версии 10.50. Но полной поддержки стандарта нет пока ни у кого. Поэтому веб-дизайнерам, собравшимся использовать преимущества SVG, конечно же, предстоит много счастливых минут по тестированию своего векторного контента во всех существующих браузерах.

Михаил АСТАПЧИК

Версия для печатиВерсия для печати

Номер: 

11 за 2010 год

Рубрика: 

Internet
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!