私はnodejsで、ローカルファイルシステムの一時ファイルに結果のpngを保存せずに、 imagemagickhttps: //github.com/rsms/node-imagemagickを使用してsvgをpngに変換する方法を探しています。
残念ながら、私はこれを行うことができません。そして、私はインターネットで例を見つけられませんでした。誰かが私に例を教えてもらえますか?
私はnodejsで、ローカルファイルシステムの一時ファイルに結果のpngを保存せずに、 imagemagickhttps: //github.com/rsms/node-imagemagickを使用してsvgをpngに変換する方法を探しています。
残念ながら、私はこれを行うことができません。そして、私はインターネットで例を見つけられませんでした。誰かが私に例を教えてもらえますか?
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のドキュメントを参照してください。
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();
結果を一時ファイルとして保存せずに、ストリームを使用して結果をどこかにパイプすることもできます。以下は、 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%です
svgexportを使用することもできます(私はその作者です):
var svgexport = require('svgexport');
svgexport.render({input: 'file.svg', output: 'file.png'}, callback);