gpt4 book ai didi

c++ - 如何使图像魔术将输出 ppm 转换为标准输出

转载 作者:行者123 更新时间:2023-11-30 01:12:56 31 4
gpt4 key购买 nike

我正在编写一些图像处理例程。我的图像类支持读写 ppm (P6) 格式的图像。要使用其他类型的图像,我想通过图像魔术转换将它们转换为 ppm。为此,我需要转换以将 ppm 的内容写入标准输出,因为我正在使用管道读取它们(请注意,创建临时文件是 Not Acceptable )。

现在我有这段代码。

void Image::read(const char* file)
{
std::string cmd = std::string("convert \"") + file + std::string("\" -depth 16 -format ppm /dev/stdout");

std::cout << cmd << std::endl;

FILE* f = popen(cmd.c_str(), "r");
img_assert(f, "Could not start conversion process.");

try
{
read_ppm(f);
}
catch(...)
{
pclose(f);
img_assert(false, "Conversion failed.");
}

pclose(f);
}

popen 使用的命令如下。convert "/home/chase/Desktop/m27.jpg"-depth 16 -format ppm/dev/stdout

当我在终端中运行它时,我没有得到正确的 PPM 输出,因为文件的第一行不是以 P6 开头。执行此操作的正确命令行是什么?

最佳答案

你可能想要:

convert input.jpg -depth 16 ppm:

这将为您提供 P6 二进制数据,或者

convert input.jpg -depth 16 -compress none ppm:

这将为您提供 P3 ASCII 数据

关于c++ - 如何使图像魔术将输出 ppm 转换为标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33201401/

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