从内存缓冲区加载文件的libpng

12

我曾经查阅过libpng文档,但并没有找到我要的内容。

我有一个完整的PNG文件存储在内存缓冲区中,除了创建临时文件这个显而易见的解决方案之外,我该如何加载这个文件呢?

不确定是否相关,但我是使用ctypes从Python调用libpng。

1个回答

12
我发现了一篇描述如何从内存中读取PNG文件的文章(文章链接)。简而言之,您需要创建一个自定义回调函数,并使用png_set_read_fn将其提供给libpng。然后在该回调函数中,您从内存缓冲区中读取数据,而不是从文件中读取数据。

4
链接已失效。 - rr-
4
链接已经被恢复。 - CAMOBAP
1
这是一个很好的资源。我发现一件事情,如果你的ReadDataFromInputStream函数实际上没有将真正的PNG数据复制到outBytes中,它会导致png_read_info()崩溃程序。在开发过程中,我只返回了占位符字节,结果程序崩溃了。当我返回真正的字节时,它就可以工作了。(这似乎有点可怕,因为它似乎意味着如果.png文件损坏,libpng可能会崩溃而不是返回错误。) - M Katz
或者使用fmemopen。 - Folkert van Heusden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接