Я генерирую SVG файлы на C#, необходимо используя C# отрендерить их в JPG или PNG. Как это можно сделать?
Интересны любые варианты, но ответом приму только тот который будет работать на shared хостинге, так как скрипт будет запускаться там. Хостинг ASP.NET MVC 5 - Smarterasp.
Библиотека SVG для C#.
Работает так:
SvgDocument svgDoc = SvgDocument.Open("myFile.svg");
System.Drawing.Bitmap bitmap = svgDoc.Draw();
bitmap.Save("outFile.jpg", ImageFormat.Jpeg);
Брать надо пакет не из NuGet так как там древняя версия и много багов, а прямо горячую, придётся скачать с github и скомпилировать.
Проект рабочий, поддерживается и развивается, но как оказалось присутствуют баги, которые разработчики постепенно убирают.
Библиотека позволяет не только рендерить готовый SVG файл, но и создавать его используя свой API на лету.
Запускаем из командной строки такую команду
inkscape.exe -z "pathToSVGFile.svg" --export-png="pathToResultFile.png"
В данной ситуации inskape я прописал их в системные пути.
Как оказалось Inkscape не все файлы которые работают в браузере может преобразовать. Для корректной работы потребовалось атрибут href у use заменить на xlink:href и прописать в головном теге svg xmlns:xlink="http://www.w3.org/1999/xlink".
Устанавливаем модуль svgexport глобально
npm install svgexport -g
Запускаем команду из консоли
svgexport "FileNameWithPath.svg" "ResultFileNameWithPath.png" png 100%
Сила этого метода в том, что node.js svgexport использует браузерный движок phantom.js для рендера, который основан на WebKit модуле, а это означает что результат будет наиболее соответствовать отображению в браузерах с Chromium основой. Кроме того получится по максимуму использовать именно браузерный синтаксис.
Минусом этого метода оказалось то, что в команде конвертации при обработке путей с русскими названиями происходит ошибка, поэтому необходимо все файлы класть в англоязычные директории.
Более подробно можно почитать тут и тут.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости