2013-04-08 1 views
2

SVG 문자열을 가져 와서 브라우저에 PNG를 출력하고 싶습니다. 몇 가지 게시물을 살펴 보았습니다.Node/gm을 사용하여 SVG 문자열을 PNG 출력

출력 할 수 있지만 svg는 출력 할 수 없습니다. 나는 svg를 파일에 쓸 수있다. 그냥 스트리밍 할 수 없다.

여기에 내가 가진 무엇 :

이 좋아
var gm = require('gm'); 
var im = gm.subClass({ imageMagick: true }); 

var inputsvg = 'public/test.svg'; 
var inputpng = 'public/test.png'; 

// works 
im(inputsvg).write(output, function(err){ 
    if (!err) console.log('image converted.'); 
}); 

// works 
im(inputpng).write(output, function(err){ 
    if (!err) console.log('image converted.'); 
}); 


res.set('Content-Type', 'image/png'); 

// works 
im(inputpng).stream(function (err, stdout, stderr) { 
    stdout.pipe(res); 
}); 

// does not work - no errors given. 
im(inputsvg).stream(function (err, stdout, stderr) { 
    stdout.pipe(res); 
}); 

답변

7

그것을 얻었다.

var svg = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg width="840" height="430" xmlns="http://www.w3.org/2000/svg" version="1.1"><rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:1;stroke:rgb(0,0,0)" /></svg>'; 

var buf = new Buffer(svg); 
res.set('Content-Type', 'image/png'); 
gm(buf, 'svg.svg').stream('png', function (err, stdout, stderr) { 
    stdout.pipe(res); 
}); 

몇 가지 중요한 점 :

  • 는 XML 라인
  • 폭과 높이가 있어야는
  • 스트림() 함수 포맷 파라미터 (필요 SVG 태그에 제공되어야 'png')

누군가를 돕는 희망.

+0

감사합니다. 정확히 내가 필요로하는 것. –