2012-12-12 175 views

回答

2

o我找到了我在找的東西。基本上,我想出瞭如何將數據傳送到轉換執行的std :: in。這使我可以在不訪問本地文件系統的情況下轉換圖像。

這裏是我的演示代碼:

var im = require('imagemagick'); 
var fs = require('fs'); 

var svg = fs.readFileSync('/somepath/svg.svg', 'utf8');     

var conv = im.convert(['svg:-', 'png:-']) 
conv.on('data', function(data) { 
    console.log('data'); 
    console.log(data); 
}); 
conv.on('end', function() { 
    console.log('end'); 
});                     
conv.stdin.write(svg); 
conv.stdin.end(); 
1

您還可以使用流並將結果傳遞到某處而不將結果存儲爲臨時文件。下面是一些示例代碼取從github repo

var fs = require('fs'); 

im.resize({ 
    srcData: fs.readFileSync('kittens.jpg', 'binary'), 
    width: 256, 
    format: 'png' 
}, function(err, stdout, stderr){ 
    if (err) throw err 
    fs.writeFileSync('kittens-resized.png', stdout, 'binary'); // change this part 
    console.log('resized kittens.jpg to fit within 256x256px') 
}); 

BTW:你的錄取率是0%

3
var im = require('imagemagick'); 
var fs = require('fs'); 
im.convert(['foo.svg', 'png:-'], 
function(err, stdout){ 
    if (err) throw err; 
    //stdout is your image 
    //just write it to file to test this: 
    fs.writeFileSync('test.png', stdout,'binary'); 
}); 

它只是拋出的「原始」的論點在命令行convert,所以對於任何問題,看看convert的文檔吧。

+0

這一個工作。謝謝 –

1

您還可以使用svgexport(我是它的作者):我

var svgexport = require('svgexport'); 

svgexport.render({input: 'file.svg', output: 'file.png'}, callback); 
+1

這會引發一個錯誤:TypeError:'null'不是一個對象(評估'input.height') – XGreen

+0

是的,它也向我拋出了同樣的錯誤。 –

+0

@HarisurRehman如果您在github上提交了一個有關詳細信息和示例的問題,我可能會幫助解決它。 –