C++:使用 fread 和 fwrite 循环复制 bmp,导致输出 bmp 填充输入 bmp 中第一个颜色
Posted
技术标签:
【中文标题】C++:使用 fread 和 fwrite 循环复制 bmp,导致输出 bmp 填充输入 bmp 中第一个颜色【英文标题】:C++: copying bmp using loop of fread and fwrite, casues output bmp is filled with color of the fisrt one in input bmp 【发布时间】:2009-12-10 21:28:48 【问题描述】:我不知道为什么,但第一个像素(左下角)加载正确,但其他像素不会加载,第一个颜色用于整个图片...
我有这个循环
fread(&pix,sizeof(pix),1,pictureIn);
fwrite(&pix,sizeof(pix),1,pictureOut);
编辑:
pix 是三个无符号字符(rgb)的结构,加载文件和信息头似乎没问题
【问题讨论】:
您没有提供足够的信息。什么是像素?你怎么知道大小? 您是否真的检查了返回值,以便判断是否出现问题? 大概你打开了一个文件?你是怎么做到的?例如,您是否以二进制模式打开它?这是一个循环吗?你明白了——我们不是读心术的人。 【参考方案1】:您使用的是什么操作系统?我最近在 Win32 下读取二进制文件时遇到问题。原来我忘了给fopen传“b”标志:
pictureIn = fopen ("in.bmp", "rb");
pictureOut = fopen ("out.bmp", "wb");
【讨论】:
以上是关于C++:使用 fread 和 fwrite 循环复制 bmp,导致输出 bmp 填充输入 bmp 中第一个颜色的主要内容,如果未能解决你的问题,请参考以下文章