libpng 从内存缓冲区加载文件
Posted
技术标签:
【中文标题】libpng 从内存缓冲区加载文件【英文标题】:libpng load file from memory buffer 【发布时间】:2013-01-10 22:46:49 【问题描述】:我尝试查看 libpng 文档,但没有找到我要查找的内容。
我有一个完全在内存缓冲区中的 PNG 文件,我该如何加载这个文件(除了创建临时文件的明显解决方案)?
不确定它是否相关,但我正在使用 ctypes 从 Python 调用 libpng。
【问题讨论】:
【参考方案1】:我找到了this article,它很好地描述了如何从内存中读取 PNG 文件。
总之,您必须创建一个自定义回调函数并使用png_set_read_fn
将其提供给libpng
。然后在该回调函数中,您从内存缓冲区而不是文件中读取。
【讨论】:
链接已失效。 链接已复活 这是一个很好的资源。我发现的一件事是,如果您的 ReadDataFromInputStream 函数实际上并未将真正的 PNG 数据复制到 outBytes,它会导致 png_read_info() 使程序崩溃。我只是在开发过程中返回占位符字节,它正在崩溃。当我返回真实字节时,它起作用了。 (这似乎有点吓人,因为它似乎暗示如果 .png 文件损坏,libpng 可能会崩溃而不是返回错误。)以上是关于libpng 从内存缓冲区加载文件的主要内容,如果未能解决你的问题,请参考以下文章