esp32 静态资源处理
对于esp32的开发,如果有http web server 用到静态资源,我们一般是集成到代码里边的,有不少方法,但是更加推荐是将静态资源转为c
代码(当然和大小有关系,如果资源比较大,可以结合外部引用的模式),以下简单说明下代码嵌入模式的简单操作
一个示例
比如有一个操作摄像头的,我们需要html 嵌入到代码中,可以通过以下操作
- gz
gz 可以减少大小
gzip -k CameraWeb.html
- 通过xdd 工具生产c 格式的代码
c 代码就可以直接集成到系统中了
xxd -i CameraWeb.html.gz > CameraWeb.h
- 效果

- 代码使用
就是添加头文件,使用数据了, 如下http server 然后gzip 格式格式的数据
static esp_err_t index_handler(httpd_req_t *req)
{
httpd_resp_set_type(req, "text/html");
httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
sensor_t *s = esp_camera_sensor_get();
if (s != NULL) {
if (s->id.PID == OV3660_PID) {
return httpd_resp_send(req, (const char *)index_ov3660_html_gz, index_ov3660_html_gz_len);
} else if (s->id.PID == OV5640_PID) {
return httpd_resp_send(req, (const char *)index_ov5640_html_gz, index_ov5640_html_gz_len);
} else {
return httpd_resp_send(req, (const char *)index_ov2640_html_gz, index_ov2640_html_gz_len);
}
} else {
log_e("Camera sensor not found");
return httpd_resp_send_500(req);
}
}
说明
实际上在esp32 项目中不少都会用到此方法,tinyml 也是经常会用到此方法的,对于资源,并不大的场景是不错的选择
浙公网安备 33010602011771号