我正在寫一些圖像處理例程。我的圖像類支持以ppm(P6)格式讀取和寫入圖像。要使用其他類型的圖像,我想通過圖像魔術轉換將它們轉換爲ppm。爲此,我需要轉換爲將ppm的內容寫入標準輸出,因爲我正在使用管道讀取它們(請注意,在不可接受的情況下創建臨時文件)。如何使圖像魔術轉換輸出ppm到標準輸出
現在我有這個代碼。
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開頭。什麼是適當的命令行來做到這一點?
感謝。我其實想要P6二進制格式。 – chasep255