[英]Empty JPEG image (DNL not supported) node-canvas
我正在嘗試使用node-canvas裁剪背景圖像,我遇到了一些奇怪的錯誤,使用以下代碼。
錯誤是“[錯誤:寫入輸出流時出錯]”。 如果我使用node-canvas repo中的crop示例代碼,我會收到此錯誤“Empty JPEG image(DNL not supported)”
/* */
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);
});
}
});
}
});
我已經多次使用node-canvas而沒有任何問題,但由於某種原因這是一個問題。 任何建議都會很棒。
libjpeg
(可能在引擎蓋下使用)不支持JPEG文件中的DNL標記( 有關說明,請參閱此文檔,最后 )。 包含此類標記的文件將聲明為零高度(因此為Empty JPEG image
消息)。 我的猜測是你的輸入文件使用這樣的標記,觸發錯誤。
至於解決方案:嘗試找到一個JPEG閱讀器,它將讀取這些類型的文件,並可以將它們轉換回libjpeg可以處理的東西。 我恐怕無法推薦任何東西,因為我自己從未遇到過這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.