RGB数组缓冲Node.js中的图像

时间:2016-02-14 19:42:59

标签: javascript node.js image

我有一个由RGB对象组成的数组(像素颜色)。例如:

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

我有图像分辨率。例如:

{
    width: 400,
    height: 300
}

如何将此数组转换为Node.js中的Buffer以在浏览器中显示?

1 个答案:

答案 0 :(得分: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并获取要使用的网址。
    • 在证明网址的HTTP请求中作为动态响应发送。