Запросить изображение и закодировать в необработанный пиксельный буфер в узле

Я хотел бы манипулировать изображением в узле и отправить его на S3, не сохраняя его локально.

Сейчас я использую модуль lwip, который принимает буферы «необработанных пикселей». Мой код для получения буфера такой.

request.get( { url: imageUrl, setEncoding: null }, function ( err, response, body ) {
    if ( err ) 
        reject( new Error( err ) )

    image.buffer = body

    resolve( image )
})

Но это, кажется, не принято. Есть ли способ получить эти необработанные данные пикселей или другой модуль, поддерживающий этот тип буфера?


person Noah    schedule 06.03.2015    source источник
comment
В документации lwip говорится, что в случае необработанного буфера пикселей вам потребуется ширина и высота изображения. У меня сейчас эта проблема, потому что, поскольку у меня уже есть необработанный буфер пикселей, у меня нет размеров. Поэтому вам лучше преобразовать его в закодированные данные изображения, где вам не нужны размеры.   -  person Pramus    schedule 13.02.2016


Ответы (1)


Я поддерживаю модуль Node.js sharp, который принимает множество форматов сжатых изображений в качестве входных данных и после необязательного изменения размера может преобразовать их в raw, несжатые данные пикселей RGB (или RGBA) в буфере. Может ли это обеспечить то, что вы ищете?

person Lovell Fuller    schedule 07.03.2015
comment
Привет, Ловелл, вы знаете, как я могу получить высоту и ширину необработанного буфера изображения, чтобы передать его вашему конструктору? - person Miguel Coder; 20.01.2019