#include #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 jboolean 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->GetBooleanField(saveParam, env->GetFieldID(cls, "ocr", "Z")); 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 (jboolean)ret; } extern "C" JNIEXPORT jboolean 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 (jboolean)ret; } extern "C" JNIEXPORT jobject JNICALL Java_com_easing_java_HGScannerLib_GetImageInfo( JNIEnv* env, jclass clazz, jlong img) { printf("\nJava_com_easing_java_HGScannerLib_GetImageInfo\n"); jclass cls = env->FindClass("com/easing/java/HGLibImageInfo"); jmethodID init = env->GetMethodID(cls, "", "()V"); jobject imgInfo = env->NewObject(cls, init); HGLibImageInfo imgInfo2 = {0}; HGBool ret = HGLib_GetImageInfo((HGLibImage)img, &imgInfo2); printf("ret=%d\n", ret); if (ret) { 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 imgInfo; } 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 imgData; HGByte *imgData2 = HGLib_GetImageData((HGLibImage)img); printf("imgData=0x%p\n", imgData2); if (NULL != imgData2) { HGLibImageInfo imgInfo = {0}; if (HGLib_GetImageInfo((HGLibImage)img, &imgInfo)) { imgData = env->NewByteArray(imgInfo.widthStep * imgInfo.height); env->SetByteArrayRegion(imgData, 0, imgInfo.widthStep * imgInfo.height, (const jbyte*)imgData2); } else { imgData = env->NewByteArray(0); } } else { imgData = env->NewByteArray(0); } printf("\n"); return imgData; } extern "C" JNIEXPORT jobject JNICALL Java_com_easing_java_HGScannerLib_GetImageDpi( JNIEnv* env, jclass clazz, jlong img) { printf("\nJava_com_easing_java_HGScannerLib_GetImageDpi\n"); jclass cls = env->FindClass("com/easing/java/HGLibImageDpi"); jmethodID init = env->GetMethodID(cls, "", "()V"); jobject imgDpi = env->NewObject(cls, init); HGUInt xDpi, yDpi; HGBool ret = HGLib_GetImageDpi((HGLibImage)img, &xDpi, &yDpi); printf("ret=%d\n", ret); if (ret) { env->SetIntField(imgDpi, env->GetFieldID(cls, "xDpi", "I"), xDpi); env->SetIntField(imgDpi, env->GetFieldID(cls, "yDpi", "I"), yDpi); } printf("\n"); return imgDpi; }