以二進制方式讀寫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\n",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("無效文件句柄\n");
        return -1;
    }
    fwrite(buf,nSize,1,fp);
    //printf("2--%d\n",nSize);
    fclose(fp);
    return 0;
}

使用例子

int nSize = 0;//保存jpg二進制數據的大小
char* buf = readBinFile("111.jpg",nSize);
if (buf == NULL)
{
    printf("打開文件失敗\n");
}
writeBinFile("112.jpg",buf,nSize);//簡單測試,未對返回值做校驗
//釋放申請的內存
if (buf)
{
    free(buf);
    buf = NULL;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM