java - 通过 JNI C 代码将 PNG 图像作为 BufferedImage 加载到 Java 中

标签 java java-native-interface bufferedimage

我遇到以下问题。我有 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/

相关文章:

java - 在 Android 中获取当前星期几的最简单方法是什么?

java - 运行时异常不终止程序

Android原生C++函数调用导致应用崩溃

java - 我有两张 Bitmap 格式的图片,我想将一张透明度为 50% 的图片叠加在另一张上

java - 从 Java 应用程序发送带参数的 POST 请求时出现问题

java - 在 java 中使用带别名的查询

java - 使用java native 接口(interface)获取Windows当前用户

android - 来自 Android 的 OpenCV JNI 上的 SIGSEGV

java - 在 Java 中旋转 BufferedImage

java - 如何在不丢失透明度的情况下将图像转换为灰度?