3

私はnodejsで、ローカルファイルシステムの一時ファイルに結果のpngを保存せずに、 imagemagickhttps: //github.com/rsms/node-imagemagickを使用してsvgをpngに変換する方法を探しています。

残念ながら、私はこれを行うことができません。そして、私はインターネットで例を見つけられませんでした。誰かが私に例を教えてもらえますか?

4

4 に答える 4

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');
});

コマンドラインに「raw」引数をスローするだけconvertなので、さらに質問がある場合は、convertのドキュメントを参照してください。

于 2012-12-12T18:23:53.877 に答える
3

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();
于 2012-12-13T07:18:12.333 に答える
1

結果を一時ファイルとして保存せずに、ストリームを使用して結果をどこかにパイプすることもできます。以下は、 githubリポジトリから取得したサンプルコードです。

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')
});

ところで:あなたの合格率は0%です

于 2012-12-12T18:17:11.997 に答える
1

svgexportを使用することもできます(私はその作者です):

var svgexport = require('svgexport');

svgexport.render({input: 'file.svg', output: 'file.png'}, callback);
于 2015-01-13T05:49:25.233 に答える