c-如何从websocket客户端发送内存中的jpg图像



我在玩ESP32-CAM。我有一个图像编码为jpg在一个结构中作为这个

typedef struct {
uint8_t * buf;              /*!< Pointer to the pixel data */
size_t len;                 /*!< Length of the buffer in bytes */
size_t width;               /*!< Width of the buffer in pixels */
size_t height;              /*!< Height of the buffer in pixels */
pixformat_t format;         /*!< Format of the pixel data */
struct timeval timestamp;   /*!< Timestamp since boot of the first DMA buffer of the frame */
} camera_fb_t;

可以看出,原始图像数据似乎是一个uint8_t数组。

我想通过网络套接字连接发送此图像数据。二进制数据的发送函数具有以下语法

esp_websocket_client_send(client,(char *)fb->buf, 1000, portMAX_DELAY);

如果将指针格式从char更改为uint8_t,则会出现编译器错误。所以我使用上面的语法。尽管如此,它似乎仍然有效,并且python websockets服务器接收某种类型的数据。在python中,当打印到服务器终端时,数据看起来是这样的。

b'xffxd8xffxe0x00x10JFIFx00x01x01x0  etc.

我想知道我是否以合适的数据格式发送二进制jpg数据?我的意思是,将uint8数组解释为char数组似乎有点奇怪。在发送之前,我是否应该对其进行不同的编码?

"send"函数不适用于二进制数据。

图像像素是二进制数据。

建议使用:

int esp_websocket_client_send_bin(esp_web套接字_client_handle_t客户端,const char*数据,int len,TickType_t超时(

另请注意:.jpg图像总是512字节的倍数,因此长度应该是512的倍数,而不是1000

相关内容

  • 没有找到相关文章

最新更新