我遇到以下问题。我有 C 代码,它获取 PNG 图像作为基本原始数据并将其保存在内存中。我希望通过使用 JNI 将这些原始数据转换为 Java 中的 BufferedImage。有谁知道这样做的任何方法或以前这样做过吗?
最佳答案
我假设您了解如何使用 JNI 调用函数的基础知识。事情并没有那么复杂,尽管可能会很麻烦。
如果您想快速完成,只需将 PNG 写入临时文件,通过 JNI 向上传递文件名并使用 ImageIO 加载它。
如果您想变得更复杂,并避免需要文件路径,您可以使用 ImageIO.read(InputStream)在ByteArrayInputStream上它包装了您通过 JNI 传入的字节数组。您可以调用NewByteArray()从 C 开始,然后使用 SetByteArrayRegion设置数据。
最后,您可以考虑使用 HTTP 来传输数据,Apache has a set of components you can use包括一个小型 Web 服务器,您可以将 C 代码 POST 到 Java。
关于java - 通过 JNI C 代码将 PNG 图像作为 BufferedImage 加载到 Java 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/842386/