博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在native层中访问Java层对象
阅读量:6224 次
发布时间:2019-06-21

本文共 1919 字,大约阅读时间需要 6 分钟。

hot3.png

首先创建java层对象

package jp.co.ricoh.advop.mini.idcard;/** * Created by tangzhongliang on 9/16/2016. */public class CardInfo {    int positionX ;    int positionY ;    String path;    int scale;    public CardInfo(int positionX, int positionY, String path,int scale) {        this.positionX = positionX;        this.positionY = positionY;        this.path = path;        this.scale = scale;    }    @Override    public String toString() {        return String.format("start %d,%d,%s,%d",positionX,positionY,path,scale);    }}

 将CardInfo数组传入jni中,在Native层中通过反射的方式访问CardInfo信息

JNIEXPORT jint JNICALL Java_jp_co_ricoh_advop_mini_idcard_ImageHandle_combinecard(JNIEnv * env, jobject obj,jstring dstString,jint width,jint height,jobjectArray objarray){    LOGD("combine card");    jsize len = env->GetArrayLength(objarray);    int ow = (int)width;    int oh = (int)height;    Mat newMat = Mat(Size(ow,oh),CV_8UC3,Scalar(255,255,255));    for(int i = 0;i
GetObjectArrayElement(objarray,(jsize)i); jclass cls = env->GetObjectClass(cardinfo); jfieldID fid = env->GetFieldID(cls,"positionX","I"); int x = (int)env->GetIntField(cardinfo,fid); fid = env->GetFieldID(cls,"positionY","I"); int y = (int)env->GetIntField(cardinfo,fid); fid = env->GetFieldID(cls,"path","Ljava/lang/String;"); jstring jstr = (jstring)env->GetObjectField(cardinfo,fid); char* path = jstring2string(env,jstr); fid = env->GetFieldID(cls,"scale","I"); int scale = (int)env->GetIntField(cardinfo,fid); //resize Mat logo = imread(path,-1); resize(logo,logo,Size(logo.cols*scale,logo.rows*scale)); LOGD("%d,%d,%d",ow,oh,scale); if(mixImage(newMat,logo,x,y)==-1){ return -1; } } char* dstPath = jstring2string(env,dstString); imwrite(dstPath,newMat); LOGD("complete"); return 0; }

 

转载于:https://my.oschina.net/leonardtang/blog/797037

你可能感兴趣的文章
第十九章——使用资源调控器管理资源(3)——监控资源调控器
查看>>
微软职位内部推荐-Software Engineer II
查看>>
**PHP错误Cannot use object of type stdClass as array in错误的
查看>>
漫谈python中的搜索/排序
查看>>
求π的近似值
查看>>
索引深入浅出(5/10):非聚集索引的B树结构在堆表
查看>>
【git学习五】git基础之git分支
查看>>
Java多线程之wait(),notify(),notifyAll()
查看>>
精通javascript(看书笔记)
查看>>
简单工厂模式
查看>>
数据挖掘实习
查看>>
关于telnet协议的研究以及用java进行封装实现自己的telnet客户端(转)
查看>>
jQuery 效果 - 淡入淡出
查看>>
cachefiled
查看>>
oncopy和onpaste
查看>>
栈和堆之间的差
查看>>
net-snmp-5.7.3配置编译安装
查看>>
Visual Studio跨平台开发(1):Hello Xamarin!
查看>>
全新E:网站不是之前排名浮动 相比于竞争对手究竟缺少了什么?
查看>>
Json解析
查看>>