42

私はnodejsが初めてで、画像からexif情報を取得するサーバーをセットアップしようとしています。私の画像は S3 にあるので、s3 の URL をパラメーターとして渡して、そこから画像を取得できるようにしたいと考えています。

以下のExifImageプロジェクトを使用してexif情報を取得し、ドキュメントに従っています:

「ファイルシステムで画像のファイル名を提供する代わりに、バッファーを ExifImage に渡すこともできます。」

ExifImage関数に渡すことができるように、URLからノードのバッファに画像をロードするにはどうすればよいですか

ExifImage プロジェクト: https://github.com/gomfunkel/node-exif

ご協力いただきありがとうございます!

4

7 に答える 7

61

次のようにリクエストを設定してみてください。

var request = require('request').defaults({ encoding: null });
request.get(s3Url, function (err, res, body) {
      //process exif here
});

に設定encodingするnullと、リクエストは文字列ではなくバッファを出力します。

于 2013-08-16T02:55:32.853 に答える
18

必要なencoding: nullものを読んで、リクエストするパラメータとして提供した後にのみ、これを解決できました。

これにより、url から画像がダウンロードされ、画像データを含むバッファーが生成されます。

リクエスト ライブラリの使用 -

const request = require('request');

let url = 'http://website.com/image.png';
request({ url, encoding: null }, (err, resp, buffer) => {
     // Use the buffer
     // buffer contains the image data
     // typeof buffer === 'object'
});

注: encoding: nullwill を省略すると、バッファではなく、使用できない文字列になります。Buffer.from も正しく動作しません。

これはNode 8でテストされました

于 2018-06-28T08:47:14.627 に答える
2

あなたはそのようにすることができます

import axios from "axios";

function getFileContentById(
  download_url: string
): Promise < Buffer > {
  const response = await axios.get(download_url, {
    responseType: "arraybuffer",
  });
  return Buffer.from(response.data, "base64");
}
于 2021-08-15T22:18:52.460 に答える