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