zoukankan      html  css  js  c++  java
  • 以二进制方式读写jpg文件

    long _filesize(FILE *stream) 
    { 
        long curpos, length; 
        curpos = ftell(stream); 
        fseek(stream, 0L, SEEK_END); 
        length = ftell(stream); 
        fseek(stream, curpos, SEEK_SET); 
        return length; 
    } 
    
    char* readBinFile(char* name,int& nSize)
    {
        FILE *fp;
        if ((fp=fopen(name, "rb")) == NULL)
            return NULL;
        long buffsize = _filesize(fp);
        nSize = buffsize;
        char *buff = (char *)malloc(buffsize*sizeof(char));
        //printf("1--%d
    ",buffsize);
        fread(buff, buffsize, 1, fp);
        fclose(fp);
        return buff;
    }
    int writeBinFile(char* name,char* buf, long nSize)
    {
        FILE *fp = fopen(name,"wb");
        if (fp == NULL)
        {
            printf("无效文件句柄
    ");
            return -1;
        }
        fwrite(buf,nSize,1,fp);
        //printf("2--%d
    ",nSize);
        fclose(fp);
        return 0;
    }

    使用例子

    int nSize = 0;//保存jpg二进制数据的大小
    char* buf = readBinFile("111.jpg",nSize);
    if (buf == NULL)
    {
        printf("打开文件失败
    ");
    }
    writeBinFile("112.jpg",buf,nSize);//简单测试,未对返回值做校验
    //释放申请的内存
    if (buf)
    {
        free(buf);
        buf = NULL;
    }
  • 相关阅读:
    面向对象程序设计作业1
    寒假作业4
    寒假作业3
    寒假作业2
    寒假学习计划
    三个生命中极可爱的人与难舍的往事
    Numpy and Pandas
    入门级神经网络之权重训练
    tensorboard入门
    1
  • 原文地址:https://www.cnblogs.com/LYF-LIUDAO/p/7903879.html
Copyright © 2011-2022 走看看