gpt4 book ai didi

c++ - 使用 ofstream 创建一个位图文件有一个奇怪的输出

转载 作者:太空宇宙 更新时间:2023-11-04 13:06:19 25 4
gpt4 key购买 nike

我正在尝试用 C++ 打开一个位图文件,更改它,然后创建另一个位图文件。问题是当我尝试使用 ofstream 输出位图文件时,即使不更改文件的任何字节,它也会有一个奇怪的输出。

#include <fstream>
using namespace std;

int main ()
{
ifstream fin ("6.bmp", std::ios::binary);
ofstream fout ("output.bmp");
for (int i = 0; i < 1920*1080*3 + 54; i++)
fout.put(fin.get());
}

1920 * 1080 是图片尺寸,*3 代表红、绿、蓝。我知道一个位图文件有一个 54 字节的文件头,所以我认为 6.bmp 中正好有 1920*1080*3 + 54 字节;

当输入是:input

然后我得到 this用于输出。

(我调整了两张图片以上传它们,但它们都是 1920*1080)

我在 Windows 8.1 中用 g++ 编译了这段代码。而且我不想使用位图库。

最佳答案

在 Windows 中,fout 也必须以二进制模式打开,否则将在每个 0x0a 字节之前自动插入一个 0x0d 字节,从而损坏输出文件。

关于c++ - 使用 ofstream 创建一个位图文件有一个奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42168407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com