как загрузить изображение из url в буфер в nodejs
Я новичок в nodejs и пытаюсь настроить сервер, где я получаю информацию exif из образа. Мои изображения находятся на S3, поэтому я хочу иметь возможность просто передать url-адрес s3 в качестве параметра и захватить изображение из него.
Я использую проект ExifImage ниже, чтобы получить информацию exif и в соответствии с их документацией:
" вместо указания имени файла образа в файловой системе вы также можете передать буфер в ExifImage."
Как загрузить изображение в буфер в узле из url-адреса, чтобы я мог передать его функции ExifImage
Проект ExifImage:
https://github.com/gomfunkel/node-exif
Спасибо за помощь!
3 ответов:
Попробуйте настроить запрос следующим образом:
var request = require('request').defaults({ encoding: null }); request.get(s3Url, function (err, res, body) { //process exif here });Это вызовет запрос на вывод буфера вместо строки.
Используйте библиотеку request.
request('<s3imageurl>', function(err, response, buffer) { // Do something });Кроме того, node-image-headers может представлять для вас интерес. Похоже, что он принимает поток, поэтому ему даже не нужно загружать полное изображение из S3, чтобы обработать заголовки.
Обновлено с корректной сигнатурой обратного вызова.
Я смог решить эту задачу только после того, как прочитал, что
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: nullприведет к непригодной строке, а не к буферу. Буфер.от не будет работать правильно тоже.Это было проверено с узлом 8
Comments