2017-04-25 109 views
0

我正在嘗試縮減節點中的圖像。我把這個圖像存儲爲base64編碼的字符串(即:「data:image/png; base64,iVBOR」等)。我正在使用Sharp npm軟件包。該文檔似乎描述了sharp可以將文件路徑轉換爲圖像或「inputBuffer」。我做了一些Google搜索,並假設他們指的是Buffer類。嘗試下面的代碼不斷導致我收到以下錯誤:「輸入緩衝區包含不支持的圖像格式。」我的問題是什麼,如果你不確定你能否給我推薦一個更清晰的文檔npm包?如何將base64字符串轉換爲輸入緩衝區?

const downsizeProfileImgForTweet = (user, cb) => { 
     let imgBuffer = Buffer.from(user.profileImg, 'base64'); 
     sharp(imgBuffer) 
     .resize(52, 52) 
     .toBuffer() 
     .then(data => { 
      console.log("success"); 
      user.profileImg = data; 
      cb() 
     }) 
     .catch(err => console.log(`downisze issue ${err}`)); 
    } 

我看遍了整個互聯網,做了一堆猜測和檢查,所以原諒我的noob問題。預先感謝您提供的任何幫助!

+0

您是否記得在傳遞給'Buffer.from()'之前首先剝離非base64頭部數據(''data:image/png; base64'''部分)? – mscdex

+0

我不會現在就試試這個 – stckoverflowaccnt12

+0

@mscdex是的現在它的工作原理!謝謝 – stckoverflowaccnt12

回答

0

一個問題是數據URI中的元數據('data:image/png;base64,')在傳遞到Buffer.from()之前沒有被剝離,導致圖像數據被破壞。假設base64內容本身有效,首先刪除元數據應允許數據正確解碼。

相關問題