gpt4 book ai didi

c++ - 写入 PGM 文件

转载 作者:行者123 更新时间:2023-11-30 02:04:41 25 4
gpt4 key购买 nike

我正在尝试使用这段代码编写一个 pgm 文件..

myfile << "P5" << endl;
myfile << sizeColumn << " " << sizeRow << endl;
myfile << Q << endl;
myfile.write( reinterpret_cast<char *>(image), (sizeRow*sizeColumn)*sizeof(unsigned char));

如果我尝试将其写入 .txt 文件,它会写入 char 表示形式。

如何将我的值写入 pgm 文件以便它们正确显示?有没有人有任何链接,因为我在上面找不到太多!

最佳答案

您可能不想使用 std::endl ,因为它会刷新输出流。

此外,如果您希望与 Windows(以及可能来自 Microsoft 的任何其他操作系统)兼容,则必须以二进制模式打开文件。 Microsoft 默认以文本模式打开文件,这通常具有一个不再需要的不兼容功能(古老的 DOS 向后兼容性):它将每个“\n”替换为“\r\n”。

PGM文件格式头是:

"P5"                           + at least one whitespace (\n, \r, \t, space)
width (ascii decimal) + at least one whitespace (\n, \r, \t, space)
height (ascii decimal) + at least one whitespace (\n, \r, \t, space)
max gray value (ascii decimal) + EXACTLY ONE whitespace (\n, \r, \t, space)

这是将 pgm 输出到文件的示例:

#include <fstream>
const unsigned char* bitmap[MAXHEIGHT] = …;// pointers to each pixel row
{
std::ofstream f("test.pgm",std::ios_base::out
|std::ios_base::binary
|std::ios_base::trunc
);

int maxColorValue = 255;
f << "P5\n" << width << " " << height << "\n" << maxColorValue << "\n";
// std::endl == "\n" + std::flush
// we do not want std::flush here.

for(int i=0;i<height;++i)
f.write( reinterpret_cast<const char*>(bitmap[i]), width );

if(wannaFlush)
f << std::flush;
} // block scope closes file, which flushes anyway.

关于c++ - 写入 PGM 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323921/

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