scannerlib库增加jni调用
This commit is contained in:
parent
662cf18938
commit
9e5aee9eed
|
@ -30,4 +30,10 @@ HGLib_DeviceShutDown
|
||||||
HGLib_StartDeviceScan
|
HGLib_StartDeviceScan
|
||||||
HGLib_StopDeviceScan
|
HGLib_StopDeviceScan
|
||||||
HGLib_StopDeviceScanAsyn
|
HGLib_StopDeviceScanAsyn
|
||||||
HGLib_GetDeviceOperateCode
|
HGLib_GetDeviceOperateCode
|
||||||
|
|
||||||
|
Java_com_easing_java_HGScannerLib_LoadImage
|
||||||
|
Java_com_easing_java_HGScannerLib_SaveImage
|
||||||
|
Java_com_easing_java_HGScannerLib_ReleaseImage
|
||||||
|
Java_com_easing_java_HGScannerLib_GetImageInfo
|
||||||
|
Java_com_easing_java_HGScannerLib_GetImageData
|
|
@ -51,6 +51,8 @@ win32 {
|
||||||
}
|
}
|
||||||
|
|
||||||
DEF_FILE = HGScannerLib.def
|
DEF_FILE = HGScannerLib.def
|
||||||
|
INCLUDEPATH += $$PWD/../../../third_party/jdk/include
|
||||||
|
INCLUDEPATH += $$PWD/../../../third_party/jdk/include/win32
|
||||||
LIBS += -lgdi32 -lgdiplus -ldbghelp
|
LIBS += -lgdi32 -lgdiplus -ldbghelp
|
||||||
LIBS += -L$$PWD/../../build/$${MY_OS}/$${OEM_NAME}/$${MY_ARCH}/$${MY_CONFIGURE} -l$${OEM_PREFIX}Base -l$${OEM_PREFIX}ImgFmt -l$${OEM_PREFIX}ImgProc
|
LIBS += -L$$PWD/../../build/$${MY_OS}/$${OEM_NAME}/$${MY_ARCH}/$${MY_CONFIGURE} -l$${OEM_PREFIX}Base -l$${OEM_PREFIX}ImgFmt -l$${OEM_PREFIX}ImgProc
|
||||||
LIBS += -L$$PWD/../../../../sdk/lib/win/$${MY_ARCH}/OEM/$${OEM_NAME} -lsanexy
|
LIBS += -L$$PWD/../../../../sdk/lib/win/$${MY_ARCH}/OEM/$${OEM_NAME} -lsanexy
|
||||||
|
@ -177,6 +179,7 @@ unix {
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
../../../sdk/scannerlib/HGLibDeviceImpl.cpp \
|
../../../sdk/scannerlib/HGLibDeviceImpl.cpp \
|
||||||
../../../sdk/scannerlib/HGScannerLib.cpp \
|
../../../sdk/scannerlib/HGScannerLib.cpp \
|
||||||
|
../../../sdk/scannerlib/HGScannerLibJni.cpp \
|
||||||
../../../utility/HGString.cpp
|
../../../utility/HGString.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
#include <jni.h>
|
||||||
|
#include "HGScannerLib.h"
|
||||||
|
|
||||||
|
extern "C" JNIEXPORT jlong JNICALL Java_com_easing_java_HGScannerLib_LoadImage(
|
||||||
|
JNIEnv* env, jclass clazz, jstring filePath)
|
||||||
|
{
|
||||||
|
printf("\nJava_com_easing_java_HGScannerLib_LoadImage\n");
|
||||||
|
|
||||||
|
jboolean isCopy;
|
||||||
|
const char* ptr = env->GetStringUTFChars(filePath, &isCopy);
|
||||||
|
printf("filePath=%s\n", ptr);
|
||||||
|
HGLibImage img = HGLib_LoadImage(ptr);
|
||||||
|
printf("img=0x%p\n", img);
|
||||||
|
env->ReleaseStringUTFChars(filePath, ptr);
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
return (jlong)img;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" JNIEXPORT jint JNICALL Java_com_easing_java_HGScannerLib_SaveImage(
|
||||||
|
JNIEnv* env, jclass clazz, jlong img, jstring filePath, jobject saveParam)
|
||||||
|
{
|
||||||
|
printf("\nJava_com_easing_java_HGScannerLib_SaveImage\n");
|
||||||
|
|
||||||
|
HGLibSaveImageParam saveParam2 = {0};
|
||||||
|
saveParam2.size = sizeof(HGLibSaveImageParam);
|
||||||
|
|
||||||
|
jclass cls = env->GetObjectClass(saveParam);
|
||||||
|
saveParam2.jpegQuality = (HGUInt)env->GetIntField(saveParam, env->GetFieldID(cls, "jpegQuality", "I"));
|
||||||
|
saveParam2.tiffCompression = (HGUInt)env->GetIntField(saveParam, env->GetFieldID(cls, "tiffCompression", "I"));
|
||||||
|
saveParam2.tiffJpegQuality = (HGUInt)env->GetIntField(saveParam, env->GetFieldID(cls, "tiffJpegQuality", "I"));
|
||||||
|
saveParam2.ocr = (HGBool)env->GetIntField(saveParam, env->GetFieldID(cls, "ocr", "I"));
|
||||||
|
printf("jpegQuality=%u\n", saveParam2.jpegQuality);
|
||||||
|
printf("tiffCompression=%u\n", saveParam2.tiffCompression);
|
||||||
|
printf("tiffJpegQuality=%u\n", saveParam2.tiffJpegQuality);
|
||||||
|
printf("ocr=%d\n", saveParam2.ocr);
|
||||||
|
|
||||||
|
jboolean isCopy;
|
||||||
|
const char* ptr = env->GetStringUTFChars(filePath, &isCopy);
|
||||||
|
printf("img=0x%p, filePath=%s\n", (HGLibImage)img, ptr);
|
||||||
|
HGBool ret = HGLib_SaveImage((HGLibImage)img, ptr, &saveParam2);
|
||||||
|
printf("ret=%d\n", ret);
|
||||||
|
env->ReleaseStringUTFChars(filePath, ptr);
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" JNIEXPORT jint JNICALL Java_com_easing_java_HGScannerLib_ReleaseImage(
|
||||||
|
JNIEnv* env, jclass clazz, jlong img)
|
||||||
|
{
|
||||||
|
printf("\nJava_com_easing_java_HGScannerLib_ReleaseImage\n");
|
||||||
|
|
||||||
|
HGBool ret = HGLib_ReleaseImage((HGLibImage)img);
|
||||||
|
printf("ret=%d\n", ret);
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" JNIEXPORT jint JNICALL Java_com_easing_java_HGScannerLib_GetImageInfo(
|
||||||
|
JNIEnv* env, jclass clazz, jlong img, jobject imgInfo)
|
||||||
|
{
|
||||||
|
printf("\nJava_com_easing_java_HGScannerLib_GetImageInfo\n");
|
||||||
|
|
||||||
|
HGLibImageInfo imgInfo2 = {0};
|
||||||
|
HGBool ret = HGLib_GetImageInfo((HGLibImage)img, &imgInfo2);
|
||||||
|
printf("ret=%d\n", ret);
|
||||||
|
if (ret)
|
||||||
|
{
|
||||||
|
jclass cls = env->GetObjectClass(imgInfo);
|
||||||
|
env->SetIntField(imgInfo, env->GetFieldID(cls, "width", "I"), imgInfo2.width);
|
||||||
|
env->SetIntField(imgInfo, env->GetFieldID(cls, "height", "I"), imgInfo2.height);
|
||||||
|
env->SetIntField(imgInfo, env->GetFieldID(cls, "type", "I"), imgInfo2.type);
|
||||||
|
env->SetIntField(imgInfo, env->GetFieldID(cls, "widthStep", "I"), imgInfo2.widthStep);
|
||||||
|
env->SetIntField(imgInfo, env->GetFieldID(cls, "origin", "I"), imgInfo2.origin);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" JNIEXPORT jbyteArray JNICALL Java_com_easing_java_HGScannerLib_GetImageData(
|
||||||
|
JNIEnv* env, jclass clazz, jlong img)
|
||||||
|
{
|
||||||
|
printf("\nJava_com_easing_java_HGScannerLib_GetImageData\n");
|
||||||
|
|
||||||
|
jbyteArray ret;
|
||||||
|
HGByte *imgData2 = HGLib_GetImageData((HGLibImage)img);
|
||||||
|
if (NULL != imgData2)
|
||||||
|
{
|
||||||
|
HGLibImageInfo imgInfo = {0};
|
||||||
|
if (HGLib_GetImageInfo((HGLibImage)img, &imgInfo))
|
||||||
|
{
|
||||||
|
ret = env->NewByteArray(imgInfo.widthStep * imgInfo.height);
|
||||||
|
env->SetByteArrayRegion(ret, 0, imgInfo.widthStep * imgInfo.height, (const jbyte*)imgData2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
return ret;
|
||||||
|
}
|
|
@ -0,0 +1,61 @@
|
||||||
|
package com.easing.java;
|
||||||
|
|
||||||
|
class HGLibSaveImageParam {
|
||||||
|
public int jpegQuality;
|
||||||
|
public int tiffCompression;
|
||||||
|
public int tiffJpegQuality;
|
||||||
|
public int ocr;
|
||||||
|
}
|
||||||
|
|
||||||
|
class HGLibImageInfo {
|
||||||
|
public int width;
|
||||||
|
public int height;
|
||||||
|
public int type;
|
||||||
|
public int widthStep;
|
||||||
|
public int origin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class HGScannerLib {
|
||||||
|
|
||||||
|
static {
|
||||||
|
System.loadLibrary("HGScannerLib");
|
||||||
|
}
|
||||||
|
|
||||||
|
public native long LoadImage(String filePath);
|
||||||
|
public native int SaveImage(long img, String filePath, HGLibSaveImageParam saveParam);
|
||||||
|
public native int ReleaseImage(long img);
|
||||||
|
public native int GetImageInfo(long img, HGLibImageInfo imgInfo);
|
||||||
|
public native byte[] GetImageData(long img);
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
System.out.println("hello world");
|
||||||
|
|
||||||
|
HGScannerLib inst = new HGScannerLib();
|
||||||
|
|
||||||
|
String filePath1 = "D:\\1.png";
|
||||||
|
long img = inst.LoadImage(filePath1);
|
||||||
|
|
||||||
|
HGLibSaveImageParam saveParam = new HGLibSaveImageParam();
|
||||||
|
saveParam.jpegQuality = 80;
|
||||||
|
saveParam.tiffCompression = 1;
|
||||||
|
saveParam.tiffJpegQuality = 70;
|
||||||
|
saveParam.ocr = 0;
|
||||||
|
|
||||||
|
String filePath2 = "D:\\2.png";
|
||||||
|
inst.SaveImage(img, filePath2, saveParam);
|
||||||
|
|
||||||
|
HGLibImageInfo imgInfo = new HGLibImageInfo();
|
||||||
|
inst.GetImageInfo(img, imgInfo);
|
||||||
|
System.out.println("ImageInfo:");
|
||||||
|
System.out.println("width=" + imgInfo.width);
|
||||||
|
System.out.println("height=" + imgInfo.height);
|
||||||
|
System.out.println("type=" + imgInfo.type);
|
||||||
|
System.out.println("widthStep=" + imgInfo.widthStep);
|
||||||
|
System.out.println("origin=" + imgInfo.origin);
|
||||||
|
|
||||||
|
byte[] imgData = inst.GetImageData(img);
|
||||||
|
System.out.println("imgData.length=" + imgData.length);
|
||||||
|
|
||||||
|
inst.ReleaseImage(img);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
javac -d . com/easing/java/HGScannerLib.java
|
||||||
|
java com.easing.java.HGScannerLib
|
Loading…
Reference in New Issue