将RGB32字节数组转换为jpeg转换为base64字符串而不保存到磁盘

时间:2012-12-10 16:42:16

标签: c# image encoding websocket file-format

我有一个设备,它以30 FPS的速度发送RGB32编码的彩色图像帧作为字节数组。

我想通过websocket连接以最高效的方式将这些帧发送到浏览器。

我假设通过websocket获取图像数据的最佳方式是作为base64字符串,我在浏览器中将其解释为URI,但base64编码原始RGB32数据显然不起作用,因为它不可解释通过浏览器。

因此,我需要在编码到base64之前将RGB32数据编码为jpg并向下发送管道,但我能够找到的用于编码字节数组的所有解决方案都涉及保存到磁盘,这显然是一种性能杀手。

任何人都可以向我解释一下将这些RGB32字节数组动态转换为jpgs的高效工具,以便将它们推向管道吗?

或者,如果有人对替代高性能方式有任何想法将这些RGBA帧从websocket下载到浏览器,我很乐意听到。

谢谢!

代码看起来像这样:

private void ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
{
    using (ColorImageFrame frame = e.OpenColorImageFrame())
    {
        if (frame != null)
        {
            byte[] pixelData = new byte[frame.PixelDataLength];
            frame.CopyPixelDataTo(pixelData);
            //display in wpf   
            this._ColorImageBitmap.WritePixels(this._ColorImageBitmapRect, pixelData, this._ColorImageStride, 0);

            //send via websocket to chrome
            //how do we create a base64 encoded jpg here and pass it off to chrome?
            MainWindow.Broadcast(DataForChromeGoesHere);

        }
    }
}

0 个答案:

没有答案