T5 SMP版本(3.13.3)按键拍照保存数据到SD卡里面(JPG格式保存)

更新时间:2026-02-28 00:48:21下载pdf

该文档仅供参考。

1.配置打开文件系统

T5 SMP版本(3.13.3)按键拍照保存数据到SD卡里面(JPG格式保存)

2.配置为SD卡

T5 SMP版本(3.13.3)按键拍照保存数据到SD卡里面(JPG格式保存)

tuya_app_gui_set_lfs_partiton_type(TUYA_GUI_LFS_SD);

3.编写代码,按键调用拍照功能:

	bk_printf("swimming take phone \r\n");
        BYTE_T *image_data = NULL;
        UINT_T image_size = 0;
        OPERATE_RET rt = OPRT_OK;

        TUYA_CALL_ERR_LOG(tuya_ai_toy_camera_start());
        // 这里sleep 2000是用于将摄像头图形投送到屏幕,可以简单调整一下拍摄内容
        tal_system_sleep(3000);
        rt = tuya_ai_toy_camera_get_jpeg_frame(&image_data, &image_size, NULL);
        if (OPRT_OK != rt) 
        {
            TAL_PR_ERR("get jpeg frame err, rt:%d", rt);
            return;
        }
        
        // 保存图片到文件系统
        swimming_save_photo_to_file(image_data, image_size);
        
        tal_free(image_data);
        TUYA_CALL_ERR_LOG(tuya_ai_toy_camera_stop());

4.保存接口封装:

#include "ty_gui_fs.h"
#define PHOTO_FILE_PATH    "photo.jpg"
OPERATE_RET swimming_save_photo_to_file(const BYTE_T *image_data, UINT_T image_size)
{
    if (!image_data || image_size == 0)
    {
        TAL_PR_ERR("swimming Invalid image data parameters \r\n");
        return OPRT_INVALID_PARM;
    }
    
    OPERATE_RET rt = OPRT_OK;
    BOOL_T is_exist = FALSE;
    rt = tkl_fs_is_exist(PHOTO_FILE_PATH, &is_exist);
    if (rt == OPRT_OK && is_exist) 
    {
        tkl_fs_remove(PHOTO_FILE_PATH);
    }

    // 创建并打开jpg文件
    TUYA_FILE file_hdl = tkl_fopen(PHOTO_FILE_PATH, "w");
    if (file_hdl == NULL) 
   {
        TAL_PR_ERR("swimming Failed to create file %s", PHOTO_FILE_PATH);
        return OPRT_FILE_OPEN_FAILED;
    }
    
    // 写入数据到jpg文件
    INT_T write_len = tkl_fwrite(image_data, image_size, file_hdl);
    if (write_len != (INT_T)image_size) 
   {
        TAL_PR_ERR("swimming Failed to write data to file %s, expected %d bytes, wrote %d bytes",PHOTO_FILE_PATH, image_size, write_len);             
        tkl_fclose(file_hdl);
        return OPRT_COM_ERROR;
    }
    
    // 关闭文件
    rt = tkl_fclose(file_hdl);
    if (rt != OPRT_OK)
   {
        TAL_PR_ERR("swimming Failed to close file %s, rt = %d", PHOTO_FILE_PATH, rt);
        return rt;
    }
    
    TAL_PR_NOTICE("swimming Photo saved successfully: %s (%d bytes)", PHOTO_FILE_PATH, image_size);
    return OPRT_OK;
}

5.测试结果

T5 SMP版本(3.13.3)按键拍照保存数据到SD卡里面(JPG格式保存)
T5 SMP版本(3.13.3)按键拍照保存数据到SD卡里面(JPG格式保存)