资源简介

为android提供的二值化jni库,和完整demo,比Java代码的效率高10s! 一个基于jni的图像处理工具 包括二值化 灰度化 膨胀 腐蚀 等等 是android上图像处理的好例子 还能提高处理速度!实现点阵图的转化

资源截图

代码片段和文件信息

/*
 * ExecJava.c
 *
 *  Created on: 2011-10-27
 *      Author: Join
 */

#include “ExecJava.h“

#include 
#define LOG1(tag msg) __android_log_print(ANDROID_LOG_INFO tag msg)
#define LOG2(tag msg arg) __android_log_print(ANDROID_LOG_ERROR tag msg arg)

extern JNIEnv* jniEnv;

jclass JoinImage;
jobject mJoinImage;
jmethodID getTime;
jmethodID sayHello;

int GetProviderInstance(jclass obj_class);

/**
 * 初始化 类、对象、方法
 */
int InitProvider() {

LOG1(“ExecJava“ “InitProvider Step 1“);

if (jniEnv == NULL) {
return 0;
}

if (JoinImage == NULL) {
JoinImage = (*jniEnv)->FindClass(jniEnv
“org/join/image/util/JoinImage“);
if (JoinImage == NULL) {
return -1;
}
LOG1(“ExecJava“ “InitProvider Step 2“);
}

if (mJoinImage == NULL) {
if (GetProviderInstance(JoinImage) != 1) {
(*jniEnv)->DeleteLocalRef(jniEnv JoinImage);
return -1;
}
LOG1(“ExecJava“ “InitProvider Step 3“);
}

if (getTime == NULL) {
getTime = (*jniEnv)->GetStaticMethodID(jniEnv JoinImage “getTime“
“()Ljava/lang/String;“);
if (getTime == NULL) {
(*jniEnv)->DeleteLocalRef(jniEnv JoinImage);
(*jniEnv)->DeleteLocalRef(jniEnv mJoinImage);
return -2;
}
LOG1(“ExecJava“ “InitProvider Step 4“);
}

if (sayHello == NULL) {
sayHello = (*jniEnv)->GetMethodID(jniEnv JoinImage “sayHello“
“(Ljava/lang/String;)V“);
if (sayHello == NULL) {
(*jniEnv)->DeleteLocalRef(jniEnv JoinImage);
(*jniEnv)->DeleteLocalRef(jniEnv mJoinImage);
(*jniEnv)->DeleteLocalRef(jniEnv getTime);
return -3;
}
LOG1(“ExecJava“ “InitProvider Step 5“);
}

LOG1(“ExecJava“ “InitProvider Step 6“);
return 1;

}

int GetProviderInstance(jclass obj_class) {

if (obj_class == NULL) {
return 0;
}

jmethodID construction_id = (*jniEnv)->GetMethodID(jniEnv obj_class
“ “()V“);

if (construction_id == 0) {
return -1;
}

mJoinImage = (*jniEnv)->Newobject(jniEnv obj_class construction_id);

if (mJoinImage == NULL) {
return -2;
}

return 1;
}

/**
 * 获取时间 ---- 调用 Java 方法
 */
void GetTime() {
if (JoinImage == NULL || getTime == NULL) {
int result = InitProvider();
if (result != 1) {
return;
}
}

jstring jstr = NULL;
char* cstr = NULL;

LOG1(“ExecJava“ “GetTime Begin“);

jstr = (*jniEnv)->CallStaticobjectMethod(jniEnv JoinImage getTime);
cstr = (char*) (*jniEnv)->GetStringUTFChars(jniEnv jstr 0);

LOG2(“C调用Java“ “Success Get Time from Java  Value = %s“ cstr);

LOG1(“ExecJava“ “GetTime End“);

(*jniEnv)->ReleaseStringUTFChars(jniEnv jstr cstr);
(*jniEnv)->DeleteLocalRef(jniEnv jstr);
}

/**
 * SayHello ---- 调用 Java 方法
 */
void SayHello() {
if (JoinImage == NULL || mJoinImage == NULL || sayHello == NULL) {
int result = InitProvider();
if (result != 1) {
return;
}
}

jstring jstrMSG = NULL;
jstrMSG = (*jniEnv)->NewStringUTF(jniEnv

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-07-20 21:37  AndroidImage\
     文件         364  2011-10-26 10:11  AndroidImage\.classpath
     文件         848  2011-10-26 10:11  AndroidImage\.project
     文件         967  2011-11-11 17:20  AndroidImage\AndroidManifest.xml
     目录           0  2012-05-08 09:31  AndroidImage\assets\
     目录           0  2012-07-20 21:37  AndroidImage\bin\
     目录           0  2012-05-08 09:31  AndroidImage\bin\classes\
     目录           0  2012-05-08 09:31  AndroidImage\gen\
     目录           0  2012-07-20 21:37  AndroidImage\jni\
     文件        4796  2012-02-04 15:01  AndroidImage\jni\.cproject
     文件        2445  2012-02-04 15:01  AndroidImage\jni\.project
     文件         294  2011-10-28 11:12  AndroidImage\jni\Android.mk
     文件        3270  2011-10-28 13:19  AndroidImage\jni\ExecJava.c
     文件         248  2011-10-27 20:40  AndroidImage\jni\ExecJava.h
     文件       52497  2011-11-18 11:28  AndroidImage\jni\JoinImage.c
     文件        2440  2011-11-16 14:01  AndroidImage\jni\JoinImage.h
     目录           0  2012-07-20 21:37  AndroidImage\libs\
     目录           0  2012-07-20 21:37  AndroidImage\libs\armeabi\
     文件       17632  2012-02-04 15:01  AndroidImage\libs\armeabi\libJoinImage.so
     目录           0  2012-07-20 21:37  AndroidImage\obj\
     目录           0  2012-07-20 21:37  AndroidImage\obj\local\
     目录           0  2012-07-20 21:37  AndroidImage\obj\local\armeabi\
     文件       79934  2011-11-18 13:30  AndroidImage\obj\local\armeabi\libJoinImage.so
     目录           0  2012-07-20 21:37  AndroidImage\obj\local\armeabi\objs\
     目录           0  2012-07-20 21:37  AndroidImage\obj\local\armeabi\objs\JoinImage\
     文件       29396  2011-10-28 13:19  AndroidImage\obj\local\armeabi\objs\JoinImage\ExecJava.o
     文件        4091  2011-10-28 13:19  AndroidImage\obj\local\armeabi\objs\JoinImage\ExecJava.o.d
     文件       92880  2011-11-18 13:30  AndroidImage\obj\local\armeabi\objs\JoinImage\JoinImage.o
     文件        4984  2011-11-18 13:30  AndroidImage\obj\local\armeabi\objs\JoinImage\JoinImage.o.d
     文件        1248  2011-10-26 10:11  AndroidImage\proguard.cfg
     文件         360  2011-10-26 10:11  AndroidImage\project.properties
............此处省略24个文件信息

评论

共有 条评论