Как из svg сделать png. Из JPG, PNG и GIF в формат SVG: чем конвертировать картинку онлайн

На iOS - iPhone, iPod touch 12.04.2019
На iOS - iPhone, iPod touch

Иногда появляется необходимость сохранить svg в png средствами браузера. К сожалению, браузер не имеет волшебного api, который позволил бы это сделать без различных хаков. Что же делать, если все таки хочется добиться желаемого?

Первая идея, которая мне пришла в голову, сделать это через canvas, который имеет метод toDataURL("image/png");
Итак, я написал простенький скрипт: jsfiddle , github :

Var html = document.querySelector("svg").parentNode.innerHTML; var imgsrc = "data:image/svg+xml;base64," + btoa(html); var canvas = document.querySelector("canvas"), context = canvas.getContext("2d"); canvas.setAttribute("width", 526); canvas.setAttribute("height", 233); var image = new Image; image.src = imgsrc; image.onload = function () { context.drawImage(image, 0, 0); var canvasdata = canvas.toDataURL("image/png"); var a = document.createElement("a"); a.textContent = "save"; a.download = "export_" + Date.now() + ".png"; a.href = canvasdata; document.body.appendChild(a); canvas.parentNode.removeChild(canvas); };

Суть скрипта проста: я преобразовывал svg в dataUri, загружал его через image, рисовал картинку на canvas и превращал в png. Казалось, цель достигнута, и можно расслабится. Этот подход сработал в Firefox и Chrome, но открыв во всеми нами любимом браузере IE, я получил замечательную ошибку:

Дело в том, что IE считает, что картинка загружена с другого хоста. К сожалению, установить origin для dataUri не получится. Собственно, описание правил можно найти здесь: https://html.spec.whatwg.org/multipage/scripting.html#security-with-canvas-elements . Можно было, конечно, проксировать svg через сервер, и тогда все бы сработало, но хотелось чисто клиентское решение.

И тут я вспомнил про замечательную библиотеку canvg . С помощью этой библиотеки я рисую svg на canvas, а далее поступаю как в первом варианте: беру toDataURL("image/png") . Получился такой незамысловатый код: github :

Var svg = document.querySelector("svg"); var canvas = document.createElement("canvas"); canvas.height = svg.getAttribute("height"); canvas.width = svg.getAttribute("width"); canvg(canvas, svg.parentNode.innerHTML.trim()); var dataURL = canvas.toDataURL("image/png"); var data = atob(dataURL.substring("data:image/png;base64,".length)), asArray = new Uint8Array(data.length); for (var i = 0, len = data.length; i < len; ++i) { asArray[i] = data.charCodeAt(i); } var blob = new Blob(, {type: "image/png"}); saveAs(blob, "export_" + Date.now() + ".png");

Тут стоит сказать, что еще я использовал библиотеку FileSaver для вызова диалогового окна сохранения.
Вот и все, мы добились желаемого результата.

Стоит отметить один нюанс - я задался вопросом сохранения svg в png, когда писал плагин для экспорта tauCharts . Так как стили в svg задаются из внешнего файла, чтобы добиться максимально подобия с исходным svg, я вставляю inline style в svg. И получаем вот такой результат .

Надеюсь, статья окажется полезной для вас и сохранит ваше время.

SVG — это векторный формат открытого стандарта, который использует язык XML разметки и может содержать анимационную или интерактивную графику. SVG был создан специалистами World Wide Web, организацией содействующей развитию и совместимости веб-продуктов и предлагающей эти продукты свободно. SVG-файлы поддерживаются большинством веб-браузеров и могут быть созданы в программах для рисования или в текстовых редакторах.

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

Как конвертировать SVG в PNG?

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

Скачайте и установите Фотоконвертер

Фотоконвертер легко скачать, установить и использовать — не нужно быть специалистом в компьютерах, чтобы понять как он работает.

Добавьте SVG файлы в Фотоконвертер

Запустите Фотоконвертер и загрузите.svg файлы, которые вы хотите конвертировать в.png

Вы можете выбрать SVG файлы через меню Файлы → Добавить файлы либо просто перекинуть их в окно Фотоконвертера.


Выберите место, куда сохранить полученные PNG файлы


Выберите PNG в качестве формата для сохранения

Для выбора PNG в качестве формата сохранения, нажмите на иконку PNG в нижней части экрана, либо кнопку + чтобы добавить возможность записи в этот формат.


Теперь просто нажмите кнопку Старт и конвертация начнется мгновенно, а PNG файлы сохранятся в указанное место с нужными параметрами и эффектами.

Попробуйте бесплатную демо-версию

Видео инструкция

Привычные форматы JPG, PNG и GIF чрезвычайно популярны, однако в силу своих особенностей не идеальны, а в ряде случаев просто неприменимы. И специально для таких случаев придуман формат SVG.

Скажем, на так называемых «адаптивных» сайтах категорически необходимы изображения, которые одинаково хорошо выглядят на экранах любой диагонали (читай, независимо от ширины или высоты). А упомянутые JPG , и в принудительно растянутом/увеличенном виде выглядят очень по-разному и зачастую плохо.

Притом нередко на сайте (в том числе и на нашем) одна и та же картинка может использоваться как в качестве миниатюры поста, так и в качестве полноформатной иллюстрации в этом же самом и/или в другом посте.

Как правило, из одной такой картинки сайт автоматически создает сразу несколько копий разного размера, из которых потом выбирается та, которая лучше других подходит для экрана определенной диагонали (это если в общих чертах). Таким образом, в библиотеке сайта постоянно должно храниться сразу несколько версий одного изображения, что в наши дни уже не считается решением оптимальным.

Изображение в SVG — векторное. Это означает, что оно может легко масштабироваться (увеличиваться/уменьшаться) без потери качества. То есть, если вернуться к нашему примеру с сайтом, то формат SVG позволяет сохранять на сервере всего одну картинку, которая на разных страницах сайта и на разных экранах выглядеть будет одинаково качественно (в идеале).

Еще одно преимущество технологии Scalable Vector Graphics (SVG) состоит в том, что файлы в этом формате «весят» сравнительно немного. Это дает веб-мастерам некоторую свободу действий, когда возникает необходимость что-то изменить в таких файлах. Более того, некоторые изменения можно вносить непосредственно в редакторе CSS, что очень удобно.

В качестве примера использования SVG можно привести вот эту работу известного блогера Terence Eden , который в рамках эксперимента добросовестно перевел в этот формат логотипы крупнейших Интернет-компаний. Как видим, «вес» каждого лого составляет менее 1 килобайта, а у некоторых — так и менее половины килобайта. Так, стандартный логотип в PNG весит 20 килобайт, а в SVG — всего 397 байт.

Именно поэтому, в SVG на сайтах очень часто сохраняются , кнопки и различные иконки. А вот для фотографий и рисунков, в особенности тех, на который изображены сразу несколько объектов, SVG подходит хуже (или не подходит вовсе).

Теперь, собственно, о том, как перевести JPG, PNG или GIF в формат SVG

Сразу отметим, что далее речь пойдет об онлайн-сервисах, которые очень удобно использовать для конвертации файлов в оперативном режиме. Информацию о профессиональных программных инструментах для работы с векторной графикой (Adobe Illustrator, Inkscape, LibreOffice Draw и пр.) вы без труда найдете в Сети.

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

Тем не менее, намедни озадачившись вопросом поиска онлайн-сервиса для конвертации логотипа из PNG в SVG и после целенаправленного тестирования почти трех десятков нагугленных конвертеров, для себя мы составили небольшой список наиболее подходящий (на наш взгляд) ресурсов:

  • Aconvert — принимает как готовые файлы с компа, так и URL-ы картинок. Доступна опция изменения разрешения изображений. По факту конвертации логотип в SVG получился в достаточной степени качественным, но «весит» вдвое больше, чем исходник в PNG.
  • Vector Magic — сервис платный. Предусмотрена онлайн-версия ($7.95 в месяц требуется регистрация) и Windows-приложение (на том же сайте предлагается за $295). Предусмотрены автоматический и ручной режимы. Эксперименту ради воспользовались онлайн вариантом Vector Magic. И надо сказать, что он приятно удивил своим функционалом и качеством конечного результата (понравилась возможность сравнивать полученное изображение в SVG и исходник и выбирать качество конечного SVG файла).

  • Vectorizer — сервис бесплатный и особо интересен тем, что в нем кроме всего прочего имеется также функция автоматического редактора и Wizard, в котором можно устанавливать параметры конвертации. И после настройки Vectorizer начала выдавать SVG-файлы, которые были в среднем на треть легче, чем исходники в PNG при равном качестве изображений.

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

SVG — это векторный формат открытого стандарта, который использует язык XML разметки и может содержать анимационную или интерактивную графику. SVG был создан специалистами World Wide Web, организацией содействующей развитию и совместимости веб-продуктов и предлагающей эти продукты свободно. SVG-файлы поддерживаются большинством веб-браузеров и могут быть созданы в программах для рисования или в текстовых редакторах.

Как конвертировать PNG в SVG?

Самый простой способ — это скачать хорошую программу конвертации, например Фотоконвертер. Он работает быстро и эффективно, позволяя конвертировать любое количество PNG файлов за раз. Вы сможете довольно быстро оценить, что Фотоконвертер способен сэкономить массу времени которое вы будете тратить при работе вручную.

Скачайте и установите Фотоконвертер

Фотоконвертер легко скачать, установить и использовать — не нужно быть специалистом в компьютерах, чтобы понять как он работает.

Добавьте PNG файлы в Фотоконвертер

Запустите Фотоконвертер и загрузите.png файлы, которые вы хотите конвертировать в.svg

Вы можете выбрать PNG файлы через меню Файлы → Добавить файлы либо просто перекинуть их в окно Фотоконвертера.


Выберите место, куда сохранить полученные SVG файлы


Выберите SVG в качестве формата для сохранения

Для выбора SVG в качестве формата сохранения, нажмите на иконку SVG в нижней части экрана, либо кнопку + чтобы добавить возможность записи в этот формат.


Теперь просто нажмите кнопку Старт и конвертация начнется мгновенно, а SVG файлы сохранятся в указанное место с нужными параметрами и эффектами.

Попробуйте бесплатную демо-версию

Видео инструкция



Рекомендуем почитать

Наверх