linux C++环境下,dump图片注意细则

本文分享了在特定路径下dump相机预览帧的方法,详细介绍了如何解决sdcard路径open失败的问题,通过调整路径至data目录成功实现目标,并强调了使用sprintf函数时内存分配的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   目标,将camera的预览帧根据自定义条件进行dump,因此我们需要先创建一个文件 path/name,path必须存在,如果不存在则会

open()失败,另外项目中sdcard/路径下,怎么都open fail,包括关闭seLinux,然后转移路径到data目录下,最终成功,另外在使用sprintf函数进行格式化文件名时,出现一个问题是,定义的char* var必须要先进行分配内存,或者定义为字符数组,否则会出现,将格式化字符串写入NULL地址的指针,段错误 (核心已转储)。

  代码如下:

bool dump_Bmp_Img(MUInt8* addr, MUInt32 size, MUInt32 width, MUInt32 height, MChar * preFilename)               
{
    char fileName[64] = {0};                                                                                                                                                                             
    int fd;
    XLOGI("+");

    sprintf(fileName, "/data/misc/picdump/%s_%dx%d.yuv", preFilename, width, height);                           
    fd = open(fileName, O_WRONLY |O_CREAT,0777); 
    if (fd < 0) {
        ALOGE("fail to open file to save img: %s ,fd = %d", fileName,fd);                                       
        return false;
    }   

    int len = write(fd,addr, size);                                                                             

    close(fd);

    XLOGI("-");
    return true;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值