我正在用C++做一个图像处理项目。为了显示图像,我想使用默认的ubuntu图像查看器(eog)。我的Image16类中有一些可以读写PPM文件的函数。我知道这些工作,因为我可以把它们写到硬盘上,然后用eog打开它们。然而,我不想将图像写入我的硬盘,因为我有一个SSD,每个图像大约是100Mb。我想直接将图像数据导入eog。然而,这会产生一个错误,我不确定为什么。
ifstream in("/home/chase/Desktop/moon.ppm");
Image16 img = Image16::read_ppm(in);
in.close();
FILE* f = popen("eog /dev/stdin", "w");
img.write_ppm(f, 255);
pclose(f);

我设法让它与imagemagick display和feh一起工作,但我真的不喜欢这些程序。如果可能的话,我想使用eog。
发布于 2020-06-06 15:37:34
如果你真的坚持eog,你可以包装它。例如,一个粗糙的bash函数
$ eog- () { cat >/tmp/img && [ -s /tmp/img ] && eog "$@" /tmp/img; }
$ pngtopnm test.png | eog-https://stackoverflow.com/questions/29731836
复制相似问题