Base64使用node-gd编码png缓冲区

时间:2017-07-04 13:44:13

标签: javascript node.js png gd

我尝试使用node-gd GD包装器进行一些基本的PNG操作。

我想:

  • 打开png图片
  • 将此png与overlay png
  • 合并
  • 将合并的结果缓冲区编码为base64字符串

我的测试代码:

gd.openPng('./my_image.png', function(err, img) {
    img.saveAlpha(1);
    gd.openPng('./my_overlay.png', function(err, overlay) {
        overlay.copy(img, 0, 0, 0, 0, overlay.width, overlay.height);

        let buff = gd.createFromPngPtr(new Buffer(img.pngPtr())); /* this returns null? */
        console.log(buff); /* prints null as per previous line */

        let b64 = buff.toString('base64'); /* error: Cannot read property 'toString' of null */
        console.log(b64);        
    }); 
});

为什么我在gd.createFromPngPtr电话上获得空回报?

1 个答案:

答案 0 :(得分:1)

像这样解决:

gd.openPng('./di.png', function(err, img) {
    img.saveAlpha(1);
    gd.openPng('./flaming.png', function(err, overlay) {
        overlay.copy(img, 0, 0, 0, 0, overlay.width, overlay.height);
        var buff = Buffer.from(img.pngPtr(), 'binary');//, 'latin1');
        var b64 = buff.toString('base64');
        console.log(b64);
    }); 
});