如何使用toBuffer使用[node] graphicsmagick创建新图像

时间:2015-05-20 22:20:06

标签: node.js graphicsmagick

我试图创建一个新的图像,最终将通过gridfs插入到mongo数据库中。我宁愿避免向文件系统写入任何内容,因此最佳路由似乎是create a new image,将结果写入缓冲区,然后将缓冲区插入数据库。很遗憾,toBuffer method对新图片无效:

var gm = require( 'gm' );
gm(200, 200, '#000F')
    .setFormat('png')
    .fill('black')
    .drawCircle( 50, 50, 60, 60 )
    .toBuffer( 'PNG', function( error, buffer )
    {
        if( error ) { console.log( error ); return; }
        console.log( 'success: ' + buffer.length );
    }
);

...出现以下错误:

  

[错误:流产生空缓冲区]

1 个答案:

答案 0 :(得分:4)

看起来gm根本不喜欢你'PNG'toBuffer的{​​{1}}参数。我不认为它是必要的,因为你之前已经将格式指定为png。尝试简单地删除它:

var gm = require( 'gm' );
gm(200, 200, '#000F')
    .setFormat('png')
    .fill('black')
    .drawCircle( 50, 50, 60, 60 )
    .toBuffer(function( error, buffer )
    {
        if( error ) { console.log( error ); return; }
        console.log( 'success: ' + buffer.length );
    }
);