[解決済み】Base64でエンコードされた画像をディスクに保存するには?
2022-04-09 23:45:03
質問
私の Express アプリは、ブラウザから base64 エンコードされた PNG を受け取り(toDataURL()で canvas から生成)、それをファイルに書き込んでいます。しかし、このファイルは有効な画像ファイルではなく、"file" ユーティリティはこれを単に "data" として識別しています。
var body = req.rawBody,
base64Data = body.replace(/^data:image\/png;base64,/,""),
binaryData = new Buffer(base64Data, 'base64').toString('binary');
require("fs").writeFile("out.png", binaryData, "binary", function(err) {
console.log(err); // writes out file without error, but it's not a valid image
});
解決方法は?
必要以上にデータを変換しているのではないでしょうか?適切なエンコーディングでバッファを作成したら、あとはそのバッファをファイルに書き込むだけです。
var base64Data = req.rawBody.replace(/^data:image\/png;base64,/, "");
require("fs").writeFile("out.png", base64Data, 'base64', function(err) {
console.log(err);
});
new Buffer(..., 'base64') は、入力をbase64エンコードされた文字列として解釈し、単なるバイトの配列であるBufferに変換します。そして、そのバイト配列をファイルに書き込めばいいのです。
更新情報
コメントにもあるように
req.rawBody
はもうない。を使用している場合
express
/
connect
を使用する必要があります。
bodyParser()
ミドルウェアと使用
req.body
また、標準的なNodeを使用してこれを行う場合、入力される
data
イベント
Buffer
オブジェクトを作成し、この画像データのパース処理を
end
のコールバックになります。
関連
-
[解決済み] div' コンテナに合わせて画像を自動リサイズするにはどうしたらいいですか?
-
[解決済み] div 内の画像を縦に並べる方法
-
[解決済み] Node.jsのnpmモジュールをアンインストールするにはどうすればよいですか?
-
[解決済み] base64文字列をエンコード、デコードするにはどうしたらいいですか?
-
[解決済み] HTMLでBase64画像を表示する方法
-
[解決済み] JavaScriptで画像をBase64文字列に変換するにはどうすればよいですか?
-
[解決済み】Node.jsでBase64エンコードを行うにはどうすればよいですか?
-
[解決済み】JavaScriptで文字列をBase64にエンコードするにはどうすればいいですか?
-
[解決済み】PNG画像をサーバーサイドで保存する方法(base64データのURIから)。
-
[解決済み] node.jsとexpressを使った画像のアップロード、表示、保存の方法【終了しました
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] imagescがカラーマップを変更する理由 (MATLAB)
-
[解決済み] ピンクの背景のアイコンを透明にするには?
-
[解決済み] Goで生成されたアニメーションGIFがウィンドウズで動かない
-
[解決済み] RGBAカラーをRGBに変換する
-
[解決済み] RGBカラーの知覚的な明るさを決定する公式
-
[解決済み] イメージからDockerfileを生成するには?
-
[解決済み】JPGとJPEGの画像フォーマット比較
-
[解決済み】FFmpegで画像から動画を作成する方法は?
-
[解決済み] SVGはビットマップイメージの埋め込みに対応していますか?
-
[解決済み] node.jsとexpressを使った画像のアップロード、表示、保存の方法【終了しました