scannerlib完成图像jni接口
This commit is contained in:
parent
9e5aee9eed
commit
47ed82de45
|
@ -36,4 +36,5 @@ Java_com_easing_java_HGScannerLib_LoadImage
|
||||||
Java_com_easing_java_HGScannerLib_SaveImage
|
Java_com_easing_java_HGScannerLib_SaveImage
|
||||||
Java_com_easing_java_HGScannerLib_ReleaseImage
|
Java_com_easing_java_HGScannerLib_ReleaseImage
|
||||||
Java_com_easing_java_HGScannerLib_GetImageInfo
|
Java_com_easing_java_HGScannerLib_GetImageInfo
|
||||||
Java_com_easing_java_HGScannerLib_GetImageData
|
Java_com_easing_java_HGScannerLib_GetImageData
|
||||||
|
Java_com_easing_java_HGScannerLib_GetImageDpi
|
|
@ -17,7 +17,7 @@ extern "C" JNIEXPORT jlong JNICALL Java_com_easing_java_HGScannerLib_LoadImage(
|
||||||
return (jlong)img;
|
return (jlong)img;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" JNIEXPORT jint JNICALL Java_com_easing_java_HGScannerLib_SaveImage(
|
extern "C" JNIEXPORT jboolean JNICALL Java_com_easing_java_HGScannerLib_SaveImage(
|
||||||
JNIEnv* env, jclass clazz, jlong img, jstring filePath, jobject saveParam)
|
JNIEnv* env, jclass clazz, jlong img, jstring filePath, jobject saveParam)
|
||||||
{
|
{
|
||||||
printf("\nJava_com_easing_java_HGScannerLib_SaveImage\n");
|
printf("\nJava_com_easing_java_HGScannerLib_SaveImage\n");
|
||||||
|
@ -29,7 +29,7 @@ extern "C" JNIEXPORT jint JNICALL Java_com_easing_java_HGScannerLib_SaveImage(
|
||||||
saveParam2.jpegQuality = (HGUInt)env->GetIntField(saveParam, env->GetFieldID(cls, "jpegQuality", "I"));
|
saveParam2.jpegQuality = (HGUInt)env->GetIntField(saveParam, env->GetFieldID(cls, "jpegQuality", "I"));
|
||||||
saveParam2.tiffCompression = (HGUInt)env->GetIntField(saveParam, env->GetFieldID(cls, "tiffCompression", "I"));
|
saveParam2.tiffCompression = (HGUInt)env->GetIntField(saveParam, env->GetFieldID(cls, "tiffCompression", "I"));
|
||||||
saveParam2.tiffJpegQuality = (HGUInt)env->GetIntField(saveParam, env->GetFieldID(cls, "tiffJpegQuality", "I"));
|
saveParam2.tiffJpegQuality = (HGUInt)env->GetIntField(saveParam, env->GetFieldID(cls, "tiffJpegQuality", "I"));
|
||||||
saveParam2.ocr = (HGBool)env->GetIntField(saveParam, env->GetFieldID(cls, "ocr", "I"));
|
saveParam2.ocr = (HGBool)env->GetBooleanField(saveParam, env->GetFieldID(cls, "ocr", "Z"));
|
||||||
printf("jpegQuality=%u\n", saveParam2.jpegQuality);
|
printf("jpegQuality=%u\n", saveParam2.jpegQuality);
|
||||||
printf("tiffCompression=%u\n", saveParam2.tiffCompression);
|
printf("tiffCompression=%u\n", saveParam2.tiffCompression);
|
||||||
printf("tiffJpegQuality=%u\n", saveParam2.tiffJpegQuality);
|
printf("tiffJpegQuality=%u\n", saveParam2.tiffJpegQuality);
|
||||||
|
@ -43,10 +43,10 @@ extern "C" JNIEXPORT jint JNICALL Java_com_easing_java_HGScannerLib_SaveImage(
|
||||||
env->ReleaseStringUTFChars(filePath, ptr);
|
env->ReleaseStringUTFChars(filePath, ptr);
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
return ret;
|
return (jboolean)ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" JNIEXPORT jint JNICALL Java_com_easing_java_HGScannerLib_ReleaseImage(
|
extern "C" JNIEXPORT jboolean JNICALL Java_com_easing_java_HGScannerLib_ReleaseImage(
|
||||||
JNIEnv* env, jclass clazz, jlong img)
|
JNIEnv* env, jclass clazz, jlong img)
|
||||||
{
|
{
|
||||||
printf("\nJava_com_easing_java_HGScannerLib_ReleaseImage\n");
|
printf("\nJava_com_easing_java_HGScannerLib_ReleaseImage\n");
|
||||||
|
@ -55,20 +55,23 @@ extern "C" JNIEXPORT jint JNICALL Java_com_easing_java_HGScannerLib_ReleaseImage
|
||||||
printf("ret=%d\n", ret);
|
printf("ret=%d\n", ret);
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
return ret;
|
return (jboolean)ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" JNIEXPORT jint JNICALL Java_com_easing_java_HGScannerLib_GetImageInfo(
|
extern "C" JNIEXPORT jobject JNICALL Java_com_easing_java_HGScannerLib_GetImageInfo(
|
||||||
JNIEnv* env, jclass clazz, jlong img, jobject imgInfo)
|
JNIEnv* env, jclass clazz, jlong img)
|
||||||
{
|
{
|
||||||
printf("\nJava_com_easing_java_HGScannerLib_GetImageInfo\n");
|
printf("\nJava_com_easing_java_HGScannerLib_GetImageInfo\n");
|
||||||
|
|
||||||
|
jclass cls = env->FindClass("com/easing/java/HGLibImageInfo");
|
||||||
|
jmethodID init = env->GetMethodID(cls, "<init>", "()V");
|
||||||
|
jobject imgInfo = env->NewObject(cls, init);
|
||||||
|
|
||||||
HGLibImageInfo imgInfo2 = {0};
|
HGLibImageInfo imgInfo2 = {0};
|
||||||
HGBool ret = HGLib_GetImageInfo((HGLibImage)img, &imgInfo2);
|
HGBool ret = HGLib_GetImageInfo((HGLibImage)img, &imgInfo2);
|
||||||
printf("ret=%d\n", ret);
|
printf("ret=%d\n", ret);
|
||||||
if (ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
jclass cls = env->GetObjectClass(imgInfo);
|
|
||||||
env->SetIntField(imgInfo, env->GetFieldID(cls, "width", "I"), imgInfo2.width);
|
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, "height", "I"), imgInfo2.height);
|
||||||
env->SetIntField(imgInfo, env->GetFieldID(cls, "type", "I"), imgInfo2.type);
|
env->SetIntField(imgInfo, env->GetFieldID(cls, "type", "I"), imgInfo2.type);
|
||||||
|
@ -77,7 +80,7 @@ extern "C" JNIEXPORT jint JNICALL Java_com_easing_java_HGScannerLib_GetImageInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
return ret;
|
return imgInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" JNIEXPORT jbyteArray JNICALL Java_com_easing_java_HGScannerLib_GetImageData(
|
extern "C" JNIEXPORT jbyteArray JNICALL Java_com_easing_java_HGScannerLib_GetImageData(
|
||||||
|
@ -85,18 +88,50 @@ extern "C" JNIEXPORT jbyteArray JNICALL Java_com_easing_java_HGScannerLib_GetIma
|
||||||
{
|
{
|
||||||
printf("\nJava_com_easing_java_HGScannerLib_GetImageData\n");
|
printf("\nJava_com_easing_java_HGScannerLib_GetImageData\n");
|
||||||
|
|
||||||
jbyteArray ret;
|
jbyteArray imgData;
|
||||||
|
|
||||||
HGByte *imgData2 = HGLib_GetImageData((HGLibImage)img);
|
HGByte *imgData2 = HGLib_GetImageData((HGLibImage)img);
|
||||||
|
printf("imgData=0x%p\n", imgData2);
|
||||||
if (NULL != imgData2)
|
if (NULL != imgData2)
|
||||||
{
|
{
|
||||||
HGLibImageInfo imgInfo = {0};
|
HGLibImageInfo imgInfo = {0};
|
||||||
if (HGLib_GetImageInfo((HGLibImage)img, &imgInfo))
|
if (HGLib_GetImageInfo((HGLibImage)img, &imgInfo))
|
||||||
{
|
{
|
||||||
ret = env->NewByteArray(imgInfo.widthStep * imgInfo.height);
|
imgData = env->NewByteArray(imgInfo.widthStep * imgInfo.height);
|
||||||
env->SetByteArrayRegion(ret, 0, imgInfo.widthStep * imgInfo.height, (const jbyte*)imgData2);
|
env->SetByteArrayRegion(imgData, 0, imgInfo.widthStep * imgInfo.height, (const jbyte*)imgData2);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
imgData = env->NewByteArray(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
imgData = env->NewByteArray(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
return ret;
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
return imgDpi;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ class HGLibSaveImageParam {
|
||||||
public int jpegQuality;
|
public int jpegQuality;
|
||||||
public int tiffCompression;
|
public int tiffCompression;
|
||||||
public int tiffJpegQuality;
|
public int tiffJpegQuality;
|
||||||
public int ocr;
|
public boolean ocr;
|
||||||
}
|
}
|
||||||
|
|
||||||
class HGLibImageInfo {
|
class HGLibImageInfo {
|
||||||
|
@ -15,6 +15,11 @@ class HGLibImageInfo {
|
||||||
public int origin;
|
public int origin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class HGLibImageDpi {
|
||||||
|
public int xDpi;
|
||||||
|
public int yDpi;
|
||||||
|
}
|
||||||
|
|
||||||
public class HGScannerLib {
|
public class HGScannerLib {
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
@ -22,30 +27,27 @@ public class HGScannerLib {
|
||||||
}
|
}
|
||||||
|
|
||||||
public native long LoadImage(String filePath);
|
public native long LoadImage(String filePath);
|
||||||
public native int SaveImage(long img, String filePath, HGLibSaveImageParam saveParam);
|
public native boolean SaveImage(long img, String filePath, HGLibSaveImageParam saveParam);
|
||||||
public native int ReleaseImage(long img);
|
public native boolean ReleaseImage(long img);
|
||||||
public native int GetImageInfo(long img, HGLibImageInfo imgInfo);
|
public native HGLibImageInfo GetImageInfo(long img);
|
||||||
public native byte[] GetImageData(long img);
|
public native byte[] GetImageData(long img);
|
||||||
|
public native HGLibImageDpi GetImageDpi(long img);
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
System.out.println("hello world");
|
System.out.println("hello world");
|
||||||
|
|
||||||
HGScannerLib inst = new HGScannerLib();
|
HGScannerLib inst = new HGScannerLib();
|
||||||
|
|
||||||
String filePath1 = "D:\\1.png";
|
long img = inst.LoadImage("D:\\1.png");
|
||||||
long img = inst.LoadImage(filePath1);
|
|
||||||
|
|
||||||
HGLibSaveImageParam saveParam = new HGLibSaveImageParam();
|
HGLibSaveImageParam saveParam = new HGLibSaveImageParam();
|
||||||
saveParam.jpegQuality = 80;
|
saveParam.jpegQuality = 80;
|
||||||
saveParam.tiffCompression = 1;
|
saveParam.tiffCompression = 1;
|
||||||
saveParam.tiffJpegQuality = 70;
|
saveParam.tiffJpegQuality = 70;
|
||||||
saveParam.ocr = 0;
|
saveParam.ocr = false;
|
||||||
|
inst.SaveImage(img, "D:\\2.png", saveParam);
|
||||||
|
|
||||||
String filePath2 = "D:\\2.png";
|
HGLibImageInfo imgInfo = inst.GetImageInfo(img);
|
||||||
inst.SaveImage(img, filePath2, saveParam);
|
|
||||||
|
|
||||||
HGLibImageInfo imgInfo = new HGLibImageInfo();
|
|
||||||
inst.GetImageInfo(img, imgInfo);
|
|
||||||
System.out.println("ImageInfo:");
|
System.out.println("ImageInfo:");
|
||||||
System.out.println("width=" + imgInfo.width);
|
System.out.println("width=" + imgInfo.width);
|
||||||
System.out.println("height=" + imgInfo.height);
|
System.out.println("height=" + imgInfo.height);
|
||||||
|
@ -53,6 +55,11 @@ public class HGScannerLib {
|
||||||
System.out.println("widthStep=" + imgInfo.widthStep);
|
System.out.println("widthStep=" + imgInfo.widthStep);
|
||||||
System.out.println("origin=" + imgInfo.origin);
|
System.out.println("origin=" + imgInfo.origin);
|
||||||
|
|
||||||
|
HGLibImageDpi imgDpi = inst.GetImageDpi(img);
|
||||||
|
System.out.println("ImageDpi:");
|
||||||
|
System.out.println("xDpi=" + imgDpi.xDpi);
|
||||||
|
System.out.println("yDpi=" + imgDpi.yDpi);
|
||||||
|
|
||||||
byte[] imgData = inst.GetImageData(img);
|
byte[] imgData = inst.GetImageData(img);
|
||||||
System.out.println("imgData.length=" + imgData.length);
|
System.out.println("imgData.length=" + imgData.length);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue