【求助改代码】将jpg格式图片转换成二进制文件 并用数组保存起来

jagodking 2013-02-28 11:22:34
将下列代码改成将jpg格式图片转换成二进制文件 并用数组保存起来(最好是换成C语言)
FILE *fin,*fout;
void main()
{
int c;
fin=fopen( "duck.jpg","rb"); // 作为2二进制文件打开
fout=fopen("tmp.jpg","wb");
while(1){
c=fgetc(fin); // 一个字节一个字节地读入
if (feof(fin)) break; // 直到EOF
fputc ( c , fout ); // 改此句
}
}
...全文
285 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
沭水河畔 2013-03-02
  • 打赏
  • 举报
回复
Linux下可以用xxd -i test.jpg test.h生成。 仅供参考。
赵4老师 2013-03-01
  • 打赏
  • 举报
回复
仅供参考
#include <stdio.h>
#include <string.h>
#include <conio.h>
FILE *fi,*fo;
unsigned int n;
int c;
//-------------------------------------------------------
void main(int argc,char *argv[])
{
    if (argc<3) {
        cprintf("Bin2Hex srcfile desfile");
        return;
    }
    if ((fi=fopen(argv[1],"rb"))==NULL) {
        cprintf("Can not find file %s",argv[1]);
        return;
    }
    if ((fo=fopen(argv[2],"w"))==NULL) {
        fclose(fi);
        cprintf("Can not create file %s",argv[2]);
        return;
    }
    n=0;
    while (1) {
        c=fgetc(fi);
        if (EOF==c) break;
        n++;
        if (1==n)        fprintf(fo,  "0x%02X",c);
        else {
            if (1==n%16) fprintf(fo,"\n0x%02X",c);
            else         fprintf(fo, ",0x%02X",c);
        }
    }
    fcloseall();
    cprintf("OK to Bin2Hex %u bytes.",n);
}
wdmx 2013-03-01
  • 打赏
  • 举报
回复
我想说:图片文件本来就是二进制文件,读出来的自然就是二进制。
tsh185 2013-03-01
  • 打赏
  • 举报
回复
c=fgetc(fi); if (EOF==c) break; 二进制文件 这么判 ??
赵4老师 2013-03-01
  • 打赏
  • 举报
回复
引用 4 楼 jagodking 的回复:
引用 3 楼 zhao4zhong1 的回复:仅供参考C/C++ code?123456789101112131415161718192021222324252627282930313233343536#include <stdio.h>#include <string.h>#include <conio.h>FILE *fi,*fo;unsigned int n;int……
将输出文件开头加 unsigned char a[]={ 末尾加 }; 不就加入数组了吗?
wdmx 2013-03-01
  • 打赏
  • 举报
回复
fp = fopen(fileName1, "rb+");
if (NULL == fp)
{
    printf("Cannot open the %s ", fileName1);
}
else
{
    fseek(fp, 0, SEEK_END);
    fileSize = ftell(fp);
    fseek(fp, 0, SEEK_SET);
    if(fileSize > 0)
    {
	buf = malloc(fileSize+1);
	if(NULL != buf)
	{
		  memset(buf, 0, fileSize+1);
		  fread(buf, 1, fileSize, fp);
	}
	else
	{
	    printf( "read file: failure to allocate memory");
	}
    }
    fclose(fp);
    if (NULL !=  buf)
    {
	    fp = fopen(fileName2, "w");
	    if(NULL != fp)
	    {
	          fwrite(buf, 1, strlen(buf), fp);
	          fclose(fp);
	    }
	    free(buf);
    }
    else
    {
	printf("File is empty !");
    } 
}
jagodking 2013-03-01
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
仅供参考C/C++ code?123456789101112131415161718192021222324252627282930313233343536#include <stdio.h>#include <string.h>#include <conio.h>FILE *fi,*fo;unsigned int n;int c;//------------------……
貌似没有保存进数组啊,能解释一下或者有其他代码吗
wanggongcun 2013-02-28
  • 打赏
  • 举报
回复
网上找的 我也是新手不知道对不对
wanggongcun 2013-02-28
  • 打赏
  • 举报
回复
FILE *fpin,*fpout; char bufferin[SIZE]; char bufferout[9]; int sizein,i,j; if(!(fpin=fopen(...,"rb")))return; if(!(fpout=fopen(...,"w"))){fclose(fpin);return;} bufferout[8]='\0'; do{ sizein=fread(fpin bufferin SIZE...); for(i=0;i<sizein;i++){ for(j=7;j>=0;j--,bufferin[i]>>=1) bufferout[j]=bufferin[i]&1?'1':'0'; fprintf(fpout,bufferout); } }while(sizein==SIZE); fclose(fpout); fclose(fpin);

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧