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