Преобразование SVG в PNG / JPEG / BMP и наоборот? - PullRequest
2 голосов
/ 26 октября 2010

Код в PHP для преобразования SVG в другие форматы изображений и наоборот ??

Ответы [ 2 ]

5 голосов
/ 26 октября 2010

Что ж, вы, вероятно, захотите использовать функции ImageMagick или GD .Но учтите, что вы не можете конвертировать из PNG / JPEG / BMP в SVG, это улица с односторонним движением.

Редактировать: Разработка

Преобразование изображения SVG (вектор) в изображение PNG (растровое изображение) является тривиальным.ImageMagick может сделать это наверняка, и я вполне уверен, что GD тоже сможет.Если нет, то есть также PHP-привязки для rsvg.

Преобразование PNG (растровое изображение) в SVG (вектор), с другой стороны, представляет собой совершенно другую проблему.Суть проблемы заключается в том, что растровое изображение просто содержит меньше информации, чем векторное изображение: информация о формах, линиях и структуре, в частности, сглаживается до пиксельной петли и безвозвратно теряется.В некоторых случаях эта информация может быть восстановлена, но фактически никогда не может быть восстановлена ​​или повторно обнаружена.

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

Только Джон Скит может преобразовать PNG в SVG.

Reedit: Автоматическое отслеживание и личный опыт

Некоторое время назад я действительно проделал некоторую работу по отслеживанию растрового изображения для создания прототипа небольшого веб-приложения ( findздесь, MNSFW, требуется FFx / Safari / Opera ).Создание вектора было выполнено с использованием функции potrace для многократного отслеживания черно-белого изображения с пороговым значением для изоляции элементов и последующей реконструкции изображения вручную.Это был изнурительный процесс, но в то время у меня не было работы, и у меня не было ничего лучше.

Суть в том, что автоматическое отслеживание растровых изображений для создания векторных изображений в лучшем случае является хитом, инадежное получение хороших результатов требует

  1. хорошего исходного изображения
  2. много усилий
2 голосов
/ 26 октября 2010

Несколько вариантов

  1. встроить изображение в dataURI. Хотя технически это не конверсия, но многие онлайн-конвертеры работают именно так.

  2. преобразовать растровое изображение в SVG пиксель за пикселем. Это не будет масштабируемым, а размер файла будет огромным, поэтому он не настолько оптимален.

  3. Вы взаимодействуете с AutoTrace (через system) для анализа изображений, которые вы хотите преобразовать для получения приблизительных значений. Входными форматами являются BMP, TGA, PNM, PPM, PGM, PBM и поддерживаемые ImageMagick. Форматы экспорта: Postscript, svg, xfig, swf, pstoedit, emf, dxf, cgm, mif, p2e и sk. AutoTrace - FOSS.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...