1
我想使用节点画布来裁剪背景图像,我遇到了一些奇怪的错误,下面的代码。空的JPEG图像(DNL不支持)node-canvas
错误是“[错误:写入输出流时出错]”。如果我从节点帆布回购使用裁剪示例代码我得到这个错误“空JPEG图像(不支持DNL)”
/* */
var cnv = new Canvas(w,h),
ctx = cnv.getContext('2d'),
original = '/img/pages/'+page+'/background.jpg';
ctx.imageSmoothingEnabled = true;
fs.readFile('public/'+original, function(err,image){
if (err) {
res.status(404)
.send('Not found');
}
else {
var
img = new Image;
img.src = image;
ctx.drawImage(img,
Math.abs((w-img.width)/2),0,
w,h,
0,0,
w,h
);
cnv.toBuffer(function(err, buf){
console.log(err);
if(err){
res.status(500)
.send('Error generating image buffer');
}
else {
fs.writeFile('public'+resampled, buf, function(err){
console.log(err);
console.log('Resized and saved in %dms', new Date - start);
returnResampledFile(res,page,w,h);
});
}
});
}
});
我使用节点帆布几次没有问题,但由于某种原因这是个问题。任何建议都会很棒。
感谢您的回复。多数民众赞成在我最初的想法,但经过一些摆弄后,它竟然是我的问题。 在我初始化画布实例的行中,宽度和高度是从查询字符串中设置的,并且仍然被解析为字符串,因此画布可能已用0,0宽度和高度初始化。一旦我使用适当的数字/整数现在一切正常。更好的错误处理或类型转换可能会有所帮助。我会建议到节点帆布队的回购。 var cnv = new Canvas(w,h); – 2013-05-09 20:32:24
您是否错误地生成了0高度的JPEG?这可能会触发相同的消息,我想:) – robertklep 2013-05-09 20:33:49
雅这就是它是什么。 – 2013-05-09 20:36:20