JNI 자바 호출 방법 프로 세 스
jobject zoomImage(JNIEnv* env, jobject jimgo, jint width, jint height, jint hints)
{
/* 声明局部变量 */
jobject zoomimage;
jmethodID jmgsi;
jclass jimagec;
/* 查找指定名称类 */
jimagec = (*env)->FindClass(env, "java/awt/Image");
/*
获取方法id
(III)Ljava/awt/Image;为方法参数和返回值类型
(III)表示此方法参数为int,int,int三个参数。返回值为Ljava/awt/Image
*/
jmgsi = (*env)->GetMethodID(env, jimagec, "getScaledInstance", "(III)Ljava/awt/Image;");
zoomimage = (*env)->CallObjectMethod(env, jimgo, jmgsi, width, height, hints);
return zoomimage;
}
jobject getImage(JNIEnv* env, jbyteArray buf)
{
/* 声明局部变量 */
jclass jcls;
jmethodID jmid;
jmethodID jcreateimage;
jobject jtk;
jobject jimgo;
/*
FindClass函数用于查找java类,参数为类的包名形式,不过.换成了/。
java.awt.Toolkit 对应java/awt/Toolkit
*/
jcls = (*env)->FindClass(env, "java/awt/Toolkit");
if (jcls == NULL) {
return NULL;
}
/*
查找静态方法id。
第二个参数为查找方法的类class,
第三个参数为查找方法名称,
第三个参数为方法参数和返回值类型。
java中方法 public static Toolkit getDefaultToolkit()
对应的参数和方法类型为()Ljava/awt/Toolkit;
()表示此方法没有参数,Ljava/awt/Toolkit为返回值类型,记住前面的L和结尾;
*/
jmid = (*env)->GetStaticMethodID(env, jcls, "getDefaultToolkit", "()Ljava/awt/Toolkit;");
/*
调用静态方法,返回类型为Object。
参数分别为:指定方法的class和获取的方法id
*/
jtk = (*env)->CallStaticObjectMethod(env, jcls, jmid);
/*
获取非静态方法id
使用和静态一样,注意这里参数类型:([B)Ljava/awt/Image;
([B)表示此方法的参数类型为byte[]数组,具体参数对应类型可以查找sun的jni手册
*/
jcreateimage = (*env)->GetMethodID(env, jcls, "createImage", "([B)Ljava/awt/Image;");
/*
调用非静态方法,并返回Obiect对象,最后一个参数为可变参数,对应值为
方法的参数列表。
*/
jimgo = (*env)->CallObjectMethod(env, jtk, jcreateimage, buf);
/* 释放局部对象*/
(*env)->DeleteLocalRef(env, jtk);
return jimgo;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.