gpt4 book ai didi

c++ - 将图像缓冲区转换为文件流

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:26 24 4
gpt4 key购买 nike

类似的问题可能之前有人问过,我找不到我的问题的确切答案,所以决定在这里问。我正在使用第 3 方框架,该框架定义了自己的类来处理图像文件。它只接受文件名,整个实现都是围绕着能够打开这些文件流并执行读/写。我想输入一个图像缓冲区(我通过对之前打开的图像进行一些预处理获得的)并将其提供给这个框架。问题是我无法为其提供缓冲区,只能提供文件名字符串。

我正在寻找将我的缓冲区转换为文件流的最佳方法,以便它可以被框架搜索和摄取。请帮我弄清楚我应该看什么。我尝试阅读 streambuf(filebuf 和 stringbuf)并尝试将缓冲区分配给这些类型,但到目前为止没有成功。

最佳答案

如果框架只需要一个文件名,那么你必须给它传递一个文件名。这意味着数据必须驻留在文件系统中。

可移植的答案是“将您的数据写入一个临时文件并传递该文件的名称”。

在 Unix 上,您可以使用命名管道并 fork 另一个线程以通过管道提供数据...

但老实说,您最好只使用临时文件。如果您设法足够快地打开、读取和删除文件,它很可能永远无法将其写入磁盘,因为内核会缓存数据。

如果您能够使用 ramdisk (tmpfs),您可以保证一切都发生在内存中。

[编辑]

再想一想。如果您可以修改您的代码库以在 std::iostream 而不是 std::fstream 上运行,您可以向它传递一个 std::stringstream。它们支持内存缓冲区上的所有常用 iostream 操作,包括诸如查找之类的操作。

关于c++ - 将图像缓冲区转换为文件流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6420725/

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