我使用我的 C 程序将二进制数据流式传输到 ImageMagick:
inbuf = popen(string, "wb");
setbuf(inbuf, NULL); /// !!! ///
fwrite(buffer, frame, 1, inbuf);
pclose(inbuf);
而且 ImageMagick 并不总是在 windows (mingw) 上接收所有数据。如果没有 setbuf 命令(禁用缓冲),它接收的数据会更少,并且 Linux (gcc) 上也会出现问题。
当我将相同的缓冲区转储到文件时,一切正常,所有数据都写入磁盘,我什至不必禁用缓冲:
outbuf = fopen("temp\\tune.gray", "wb");
fwrite(buffer, frame, 1, outbuf);
fclose(outbuf);
我发现当我发送奇数字节时会出现问题:) 当我发送偶数时一切正常。我尝试不以批量模式写入数据,而是将缓冲区拆分为更小的部分,甚至尝试逐字节发送数据 - 它没有帮助。有任何想法吗?