2016-02-14 3 views
0

У меня есть массив, состоящий из объектов RGB (цвет пикселя). Пример:RGB массив для буферного изображения в Node.js

[ 
    {r: 40, g: 143, b: 54}, 
    {r: 86, g: 193, b: 87}, 
    ... 
] 

И у меня есть разрешение изображения. Пример:

{ 
    width: 400, 
    height: 300 
} 

Как преобразовать этот массив в буфер в Node.js для отображения в браузере?

+0

Что представляют собой эти объекты RGB? Является ли это списком пикселей на изображении? – zlumer

+0

Хотя вы можете поместить данные изображения в буфер, например 'ArrayBuffer', используя' UInt8ClampedArray', вы не сможете напрямую использовать это для отправки изображения. Для создания потока изображения, такого как jpg или png, вам нужна библиотека кодирования изображений. –

+0

@zlumer Да, цвет пикселя. – Vladimir37

ответ

1
  1. Преобразование массива объектов RGB в массив байтов.

    function RGBtoArr(rgb) 
    { 
        return [rgb.r, rgb.g, rgb.b]; 
    } 
    function flattenArray(arr) 
    { 
        return [].concat.apply([], arr); 
    } 
    var buf = new Buffer(flattenArray(arr.map(RGBtoArr))) 
    
  2. Кодировать полученные байты в формате изображения, поддерживаемого браузером.

    var png = new Png(buf, width, height); 
    png.encode(); 
    
  3. Отправляйте полученное изображение пользователю (любое из перечисленного ниже).
    • Код для вставки изображения в base64 в HTML.
    • Сохраните как png на диске и получите URL-адрес для использования.
    • Отправка в виде динамического ответа по HTTP-запросу по URL-адресу сертификации.
+0

Вопрос: для этого не требуется node-png? Также как вы могли бы отобразить это в пользовательском интерфейсе? Использовать файл? – easythrees

Смежные вопросы