Рендеринг SVG в PNG на сервере с чистым JavaScript - PullRequest
12 голосов
/ 28 октября 2011

Название говорит об этом.Я знаю, что Imagemagick может сделать это, но давайте предположим, что я на облачном сервере, который разрешает мне только JavaScript ( кашель nodeter кашель ).Что на самом деле неплохо.

Недавно я слышал, что в javascript есть рендереры h.264, так что png не так уж и далеко?

Ответы [ 3 ]

11 голосов
/ 29 октября 2011

PNG рендер не извлечен, фактически он уже существует: http://devongovett.github.com/png.js/

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

то есть: svg -> растровый рендер (поддельный холст) -> массив rgb -> файл png

Некоторыехостинг-провайдеры позволят вам объявить зависимости на уровне системы или использовать некоторые значения по умолчанию. gm отлично подойдет для этой цели:

gm = require('gm')

gm('image.svg').write('image.png', function(err){
  if (!err) console.log('image converted.')
})

Очевидно, вы можете установить imagemagick / graphicsmagick на http://no.de машине, а dotcloud такжеЯ доступен.Спросите парней в nodeter, очень вероятно, что у них есть графическая библиотека.

1 голос
/ 28 октября 2011

К сожалению, все расширенные возможности рендеринга, доступные в JavaScript, реализованы в браузерных реализациях HTML5 canvas.В NodeJS отсутствуют эти функции.

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

0 голосов
/ 24 марта 2015

Есть svg2png, который использует безголовый браузер для вывода svgs в png.

https://github.com/domenic/svg2png

https://www.npmjs.com/package/svg2png

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