繁体   English   中英

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

[英]BufferedImage image pointer data as a JNI parameter for C function

我正在开发一个使用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在C和C ++中调用的方式有所不同吗? 它会为JNI带来极大的启发,因为在线教程似乎从未真正提出JNI对于C ++的区别远胜于C的事实……

是啊,就是。

jintArrayjbyteArray是您应该使用的结构。

如果我没记错的话,那是BufferedImagegetRGB(...)方法,该方法返回一个表示RGB值的整数数组。

因此,将这两部分放在一起,您将一路顺风。

有关方法签名,请参阅文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM