web-dev-qa-db-ja.com

sails.jsまたは一般的にサーバー側のJavaScriptで画像をbase64でエンコードされたデータURLに変換するにはどうすればよいですか?

sails.jsで小さなアプリを作成していますが、データベースに画像を保存する必要があります。そのためには、画像をbase64でエンコードされたデータURLに変換して、帆のモデルに文字列として保存できるようにする必要があります。ただし、この形式で変換する方法はわかりません。古い質問はすべて、画像をbase64でエンコードされたデータURLに変換することについて質問し、クライアント側でそれを行うことについてこれに答えます。ただし、ポストリクエストで画像を取得する際に、サーバー側でそれを行いたいと思います。どうすればこれを達成できますか?

26
Adil Malik

私が理解しているように、あなたはファイルをbase64でエンコードされた文字列に変換したいと思っています。ファイルが画像であるかどうかは関係ありません。

var fs = require('fs');

// function to encode file data to base64 encoded string
function base64_encode(file) {
    // read binary data
    var bitmap = fs.readFileSync(file);
    // convert binary data to base64 encoded string
    return new Buffer(bitmap).toString('base64');
}

使用法:

var base64str = base64_encode('kitten.jpg');

ソース

62
alandarev

これはreadFileSyncで実現でき、最初のパラメーターとして画像パスを渡し、2番目としてエンコードオプションを渡します。以下に示すように:

var fs = require('fs');

var imageAsBase64 = fs.readFileSync('./your-image.png', 'base64');

node ドキュメントに従って:

fs.readFileSync(path [、options])

Fs.readFile()の同期バージョン。パスの内容を返します。

エンコードオプションが指定されている場合、この関数は文字列を返します。それ以外の場合は、バッファを返します。

38
JSON C11

もう1つの簡単な方法は、画像をリストするときに使用します

@{
    if (item.ImageData != null)
    {
        string imageBase64 = Convert.ToBase64String(item.ImageData);
        string imageSrc = string.Format("data:image/gif;base64,{0}", imageBase64);
        <img src="@imageSrc" width="100" height="100" />
    }
}
0
Sibonelo