【问题标题】:svg to png convertion with imagemagick in node.js在 node.js 中使用 imagemagick 将 svg 转换为 png
【发布时间】:2012-11-30 11:53:17
【问题描述】:

我正在 nodejs 中搜索一种方法,在 imagemagick https://github.com/rsms/node-imagemagick 的帮助下将 svg 转换为 png,而无需将生成的 png 存储在本地文件系统上的临时文件中。

很遗憾,我无法做到这一点。而且我没有在互联网上找到示例。谁能举个例子?

【问题讨论】:

    标签: node.js imagemagick


    【解决方案1】:

    你也可以使用svgexport(我是它的作者):

    var svgexport = require('svgexport');
    
    svgexport.render({input: 'file.svg', output: 'file.png'}, callback);
    

    【讨论】:

    • 这会引发错误:TypeError: 'null' is not an object (evalating 'input.height')
    • @HarisurRehman 如果您在 github 上提交带有详细信息和示例的问题,我可能可以帮助解决它。
    【解决方案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();
    

    【讨论】:

      【解决方案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 的文档。

      【讨论】:

        【解决方案4】:

        您还可以使用流并将结果通过管道传输到某处,而无需将结果存储为临时文件。下面是来自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')
        });
        

        顺便说一句:你的接受率为 0%

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-08
          • 1970-01-01
          • 2015-07-11
          • 2018-10-26
          • 1970-01-01
          • 1970-01-01
          • 2015-12-02
          • 2020-06-14
          相关资源
          最近更新 更多