ノードの画像をダウンサンプリングしようとしています。 私はその画像をbase64でエンコードされた文字列として保存しています(例: "data:image / png; base64、iVBOR"など)。 Sharp npmパッケージを使用しています。ドキュメントでは、sharpが画像へのファイルパスまたは "inputBuffer"のいずれかを取り得ることを説明しているようです。私はいくつかグーグルし、Bufferクラスを参照していると仮定します。 「入力バッファにはサポートされていない画像フォーマットが含まれています。」私が抱えている問題は何でしょうか、よくわからない場合は、より明確なドキュメントを含む別のnpmパッケージを推奨してください。
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}`) );
}
私はインターネット中を見回し、たくさんの推測とチェックをしました。あなたが提供することができるどんな助けでも前もってありがとう!
回答:
回答№1は11つの問題は、メタデータ("data:image/png;base64,"
データURI内の)は、渡される前に削除されません。 Buffer.from()
画像データが破損します。メタデータを最初に削除すると、base64コンテンツ自体が有効であると想定して、データを正しくデコードできるようになります。