Код в PHP для преобразования SVG в другие форматы изображений и наоборот?
Ну, вы, вероятно, захотите использовать функции ImageMagick или GD . Но имейте в виду, что вы не можете конвертировать из PNG / JPEG / BMP в SVG, это улица с односторонним движением.
Редактировать: Разработка
Преобразование SVG (векторного) изображения в PNG (растровое) изображение тривиально. ImageMagick может сделать это точно, и я вполне уверен, что GD также должен быть в состоянии. Если нет, существуют также привязки PHP для rsvg.
С другой стороны, преобразование PNG (bitmap) в SVG (вектор) является цельной «нулевой проблемой». Ядро проблемы заключается в том, что растровое изображение довольно просто содержит меньше информации, чем векторное изображение: информация о формах, строках и структуре, в частности, сглажена к пиксельной вершине и безвозвратно утеряна. В некоторых случаях эта информация может быть восстановлена, но никогда не будет восстановлена или вновь открыта.
Векторизация – всего лишь метод создания нового векторного изображения на основе растрового изображения, когда компьютер пытается обнаружить линии и фигуры. Эта проблема далека от тривиальной, и этот процесс, конечно же, не идеален и не является надежным в автоматическом режиме.
Только Джон Скит может преобразовать PNG в SVG.
Reedit: Автотрассировка и личный опыт
Некоторое время назад я действительно немного поработал над трассировкой растрового изображения для создания прототипа небольшого веб-приложения ( найти его здесь, MNSFW, требуется FFx / Safari / Opera ). Создание вектора было выполнено с использованием potrace для многократного отслеживания порогового черно-белого изображения для выделения элементов и последующей реконструкции изображения вручную. Это был изнурительный процесс, но в то время я не работал, и мне было нечего делать.
Точка: автоматическое отслеживание растровых изображений для создания векторных изображений в лучшем случае является хитом и пропуском, и надежное получение хороших результатов требует
Несколько вариантов
вставляйте изображение как dataURI. Это технически не конверсия, хотя, но куча онлайн-конвертеров работает именно так.
преобразуйте растровое изображение в пиксель SVG на пиксель. Это не будет масштабируемо, и размер файла будет огромным, так что это тоже не оптимально.
Вы взаимодействуете с AutoTrace (через system
) для анализа изображений, которые хотите преобразовать, чтобы получить приблизительный. Inputformats – это BMP, TGA, PNM, PPM, PGM, PBM и те, которые поддерживаются ImageMagick. Exportformats – Postscript, svg, xfig, swf, pstoedit, emf, dxf, cgm, mif, p2e и sk. AutoTrace – это FOSS.
Однако, если вы идете с 3, не ожидайте, что результат будет выглядеть слишком сильно, как вход после этого. Как уже указывали другие, вы потеряете детали во время процесса конверсии.