gpt4 book ai didi

java - BufferedImage 图像指针数据作为 C 函数的 JNI 参数

转载 作者:行者123 更新时间:2023-11-30 07:23:58 25 4
gpt4 key购买 nike

我正在开发一个使用 JNI(C 动态/共享库的桥梁)的 Java 应用程序。在应用程序的 Java 端,我生成了一系列图像,在 C 代码中,我将它们编码成视频。

我知道我可以将图像保存在某种临时文件中并将文件路径传递到 C 中,但这看起来很老套而且很慢。

我是否可以获取 BufferedImage RGB24 数组数据并将其传递到 C 中?

我对 Java 和 JNI 还很陌生。

最佳答案

将 byte[] 从 Java 传输到 C 是完全可能的。

它实际上很简单,但您真的需要注意您的方法签名。寻找示例代码..

  JNIEXPORT jbyteArray passToC(JNIEnv* env, jobject obj, jbyteArray array)
{
int length = (*env)->GetArrayLength(env, array);
byte data[256];
(*env)->GetByteArrayRegion(env, array, 0, 256, data);
//data should hold your bytes now.
}

这里还有一个有用的链接 http://docs.oracle.com/javase/1.4.2/docs/guide/jni/spec/functions.html

编辑:但就像我说的,要非常非常小心方法名称,因为它需要在其中某处有一个包/类...

也看看这个,JNI Calls different in C vs C++? 它将很好地阐明 JNI,因为在线教程似乎从来没有真正提出这样一个事实:JNI 对于 C++ 而言不同于 C 足够清楚...

关于java - BufferedImage 图像指针数据作为 C 函数的 JNI 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11692598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com