JPEG文件的读写(三)
来源:互联网 发布:淘宝联盟加油升级 编辑:程序博客网 时间:2024/05/22 15:13
在java中调用C语言的DLL共享动态库的方法.我主要参考是j2sdk文档中JNI中的部分,同时也看了看部分jni.h及相关头文件,
感觉实现起来还是比较容易的.
参考了http://www.cnblogs.com/Aimd/archive/2006/08/18/480213.html和recv的博客,很容易就制作成功了一个java方面的
JNI调用.
- package interfaces;
- public class MyNative {
- public static native String recognize(String file);
- public static String recognizeFile(String file) {
- return recognize(file);
- }
- static {
- System.loadLibrary("JavaJNIDLL");
- }
- public static void main(String[] args) {
- String res = recognizeFile("vercode.jpg");
- System.out.println(res);
- }
- }
[lidh04@localhost~$] javac interfaces.MyNative.java
[lidh04@localhost~$] javah -jni interfaces.MyNative
[lidh04@localhost~$] ls
interfaces_MyNative.h interfaces
然后部分C实现代码是这样的:
- #include <stdlib.h>
- #include "interfaces_MyNative.h"
- #include "recognize.h"
- int recognize_non8bit_figure_by_file(const char *file, char result[MAX_FIGURES+1]);
- jstring JNICALL Java_interfaces_MyNative_recognize (JNIEnv *jEnv, jclass jcls, jstring jfile)
- {
- const char *fileName = jEnv->GetStringUTFChars(jfile, 0);
- char buf[MAX_FIGURES+1] = {0};
- recognize_non8bit_figure_by_file(fileName, buf);
- jchar uniRes[MAX_FIGURES+1] = {0};
- char *p = buf;
- jchar *pUincode = uniRes;
- while (*p)
- {
- *pUincode++ = *p++;
- }
- int len = pUincode - uniRes;
- assert(len < MAX_FIGURES + 1 && len >= 0);
- jstring result = jEnv->NewString(uniRes, len);
- return result;
- }
然后制作一个共享库就行了,放在MyNative类类包interfaces的目录下,然后就可以运行进行了识别了,这样就可以完美地把
java和C++语言的结合进来, 不再出现前面用java调用外面程序出现死锁的情况了.就也算是一种解决方案了吧.
呵呵,,,用java自己开发出JPG到BMP程序,这样就可以完全实现纯JAVA的实现代码了.目前正在努力中....
<script type="text/javascript"><!--google_ad_client = "pub-1307274723602242";/* 728x15, 创建于 09-3-6 */google_ad_slot = "3124229201";google_ad_width = 728;google_ad_height = 15;// --></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
- JPEG文件的读写(三)
- JPEG文件的读写(一)
- JPEG文件的读写(二)
- 读写PDF TIFF JPEG文件的JAVA类库
- JPEG文件的读写(四)之算法分析之一文件格式
- JPEG的文件结构
- Jpeg的文件信息
- C文件之三 文件的读写
- JPEG文件的读写(五) 原来j2sdk里面有这个算法!!!
- 苏泊尔耗的JPEG解码器[三]
- 对文件读写的三种方法
- 生成JPEG文件的步骤
- jpeg 文件完整性的检查
- 三、文件操作 1、文件的创建和读写
- 容器与文件操作(三)文件的读写操作
- 从零开始学C++之IO流类库(三):文件的读写、二进制文件的读写、文件随机读写
- 从零开始学C++之IO流类库(三):文件的读写、二进制文件的读写、文件随机读写
- 【实验三】多媒体文件的读写和转换
- debug版本release版本下的GetDlgItem问题
- VC++实现位图显示透明效果
- Application Verifier Locks 0x201 Active Critical Section
- Perl中的变量(1)
- 转载:Salesforce斥资315O万美元收购InStranet
- JPEG文件的读写(三)
- java中的switch结构
- 白盒测试技术
- JS基础学习篇----JS控制checkbox全选、取消全选、删除功能
- 存储过程实现手工分页
- Theory and Practice
- JAVA到底能做什么?为何实际用到的技术却很少?
- 《商务周刊》:英特尔再度低潮出击
- 通过应用程序域AppDomain加载和卸载程序集