2017-04-25 22 views
0

私はノードのイメージをダウンサンプリングしようとしています。私はその画像をbase64でエンコードされた文字列(つまり、 "data:image/png; base64、iVBOR"など)として保存しています。 Sharp npmパッケージを使用しています。ドキュメンテーションは、シャープが画像へのファイルパスか "inputBuffer"のどちらかを取ることを描写するように見えます。私はいくつかのグーグルを行い、バッファクラスは彼らが何を指していると仮定します。下のコードを続けて試してみると、「入力バッファにサポートされていないイメージフォーマットが含まれています」というエラーが表示されます。何が問題なのでしょうか?あなたが確信が持てない場合は、より明確な文書を持つ別の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()'に渡す前にnon-base64ヘッダデータ( '' data:image/png; base64、 ''部分)を取り除くのを覚えていましたか? – mscdex

+0

私は今それを試しませんでした – stckoverflowaccnt12

+0

@mscdexはい今それは動作します!ありがとうございました – stckoverflowaccnt12

答えて

0

データURIのメタデータ('data:image/png;base64,')は、Buffer.from()に渡される前に削除されていないため、画像データが破損することがあります。 base64コンテンツ自体が有効であると仮定して、メタデータを最初に削除すると、データが正しくデコードされるはずです。

関連する問題