我试图创建一个新的图像,最终将通过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 );
}
);
...出现以下错误:
[错误:流产生空缓冲区]
答案 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 );
}
);