Javascript 使用节点gd对png缓冲区进行Base64编码

Javascript 使用节点gd对png缓冲区进行Base64编码,javascript,node.js,png,gd,Javascript,Node.js,Png,Gd,我正在尝试使用GD包装器进行一些基本的PNG操作 我想: 打开一个png图像 将此png与覆盖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

我正在尝试使用GD包装器进行一些基本的PNG操作

我想:

打开一个png图像 将此png与覆盖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调用中得到空返回值?

这样解决:

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