2023-11-02 10:38:32 +00:00
|
|
|
#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;
|
|
|
|
}
|
|
|
|
|
2023-11-03 03:59:43 +00:00
|
|
|
extern "C" JNIEXPORT jboolean JNICALL Java_com_easing_java_HGScannerLib_SaveImage(
|
2023-11-02 10:38:32 +00:00
|
|
|
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"));
|
2023-11-03 03:59:43 +00:00
|
|
|
saveParam2.ocr = (HGBool)env->GetBooleanField(saveParam, env->GetFieldID(cls, "ocr", "Z"));
|
2023-11-02 10:38:32 +00:00
|
|
|
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");
|
2023-11-03 03:59:43 +00:00
|
|
|
return (jboolean)ret;
|
2023-11-02 10:38:32 +00:00
|
|
|
}
|
|
|
|
|
2023-11-03 03:59:43 +00:00
|
|
|
extern "C" JNIEXPORT jboolean JNICALL Java_com_easing_java_HGScannerLib_ReleaseImage(
|
2023-11-02 10:38:32 +00:00
|
|
|
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");
|
2023-11-03 03:59:43 +00:00
|
|
|
return (jboolean)ret;
|
2023-11-02 10:38:32 +00:00
|
|
|
}
|
|
|
|
|
2023-11-03 03:59:43 +00:00
|
|
|
extern "C" JNIEXPORT jobject JNICALL Java_com_easing_java_HGScannerLib_GetImageInfo(
|
|
|
|
JNIEnv* env, jclass clazz, jlong img)
|
2023-11-02 10:38:32 +00:00
|
|
|
{
|
|
|
|
printf("\nJava_com_easing_java_HGScannerLib_GetImageInfo\n");
|
|
|
|
|
2023-11-03 03:59:43 +00:00
|
|
|
jclass cls = env->FindClass("com/easing/java/HGLibImageInfo");
|
|
|
|
jmethodID init = env->GetMethodID(cls, "<init>", "()V");
|
|
|
|
jobject imgInfo = env->NewObject(cls, init);
|
|
|
|
|
2023-11-02 10:38:32 +00:00
|
|
|
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");
|
2023-11-03 03:59:43 +00:00
|
|
|
return imgInfo;
|
2023-11-02 10:38:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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");
|
|
|
|
|
2023-11-03 03:59:43 +00:00
|
|
|
jbyteArray imgData;
|
|
|
|
|
2023-11-02 10:38:32 +00:00
|
|
|
HGByte *imgData2 = HGLib_GetImageData((HGLibImage)img);
|
2023-11-03 03:59:43 +00:00
|
|
|
printf("imgData=0x%p\n", imgData2);
|
2023-11-02 10:38:32 +00:00
|
|
|
if (NULL != imgData2)
|
|
|
|
{
|
|
|
|
HGLibImageInfo imgInfo = {0};
|
|
|
|
if (HGLib_GetImageInfo((HGLibImage)img, &imgInfo))
|
|
|
|
{
|
2023-11-03 03:59:43 +00:00
|
|
|
imgData = env->NewByteArray(imgInfo.widthStep * imgInfo.height);
|
|
|
|
env->SetByteArrayRegion(imgData, 0, imgInfo.widthStep * imgInfo.height, (const jbyte*)imgData2);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
imgData = env->NewByteArray(0);
|
2023-11-02 10:38:32 +00:00
|
|
|
}
|
|
|
|
}
|
2023-11-03 03:59:43 +00:00
|
|
|
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, "<init>", "()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);
|
|
|
|
}
|
2023-11-02 10:38:32 +00:00
|
|
|
|
|
|
|
printf("\n");
|
2023-11-03 03:59:43 +00:00
|
|
|
return imgDpi;
|
2023-11-02 10:38:32 +00:00
|
|
|
}
|