如何使用[node] graphicsmagick创建新的图像并使用toBuffer转换为缓冲区

3
我正在尝试创建一张新的图片,最终将通过gridfs插入到mongo数据库中。我希望避免将任何内容写入文件系统,因此最好的方法似乎是创建一个新的图像,将结果写入缓冲区,然后将缓冲区插入数据库。不幸的是,toBuffer方法对于新图像无效:
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个回答

4

看起来gm不喜欢你给toBuffer'PNG'参数。我认为这也不是必要的,因为你之前已经指定了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 );
    }
);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接