簡體   English   中英

空JPEG圖像(不支持DNL)節點畫布

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM