From 9e76f2aada2dec00e42dd237a591760daa726e77 Mon Sep 17 00:00:00 2001 From: lovelyyoung <1002639516@qq.com> Date: Wed, 15 Mar 2023 14:59:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0setPrefix=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com_huagao_scanner_DeviceManager.cpp | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/sdk/oldwebscan/libwebscan_jni/com_huagao_scanner_DeviceManager.cpp b/sdk/oldwebscan/libwebscan_jni/com_huagao_scanner_DeviceManager.cpp index 689f71fb..e623377f 100644 --- a/sdk/oldwebscan/libwebscan_jni/com_huagao_scanner_DeviceManager.cpp +++ b/sdk/oldwebscan/libwebscan_jni/com_huagao_scanner_DeviceManager.cpp @@ -49,13 +49,23 @@ static int indexPatch=0; std::mutex m_mutex; static HG_CACHEIMGFORMAT m_cacheimgformat = HG_CJPG; - +static std::string m_default_prefix = "1000"; static std::map< HG_CACHEIMGFORMAT, std::string> m_mapcaches = { {HG_CJPG,".jpg"}, {HG_CPNG,".png"}, {HG_CBMP,".bmp"}, {HG_CTIFF,".tiff"} }; +#include + +//// 使用正则表达式判断文件名是否有效(不含非法字符) +//inline bool IsValidFileName(const std::string& strFileName) +//{ +// // Windows下文件名中不能包含\/:*?"<>|这些字符 +// std::regex regExpress("[\\/:*?\"<>|]"); +// bool bValid = !std::regex_search(strFileName, regExpress); +// return bValid; +//} int writeimage(const char* filename, std::vector& imagedata) { FILE* fp = NULL; @@ -124,6 +134,7 @@ void onReceivedImage(HG_IMG* img, void* obj) else { path = WChar2Ansi(outapth); + path += m_default_prefix; path += filename; } #else @@ -137,7 +148,7 @@ void onReceivedImage(HG_IMG* img, void* obj) dstdirPath = "/tmp"; } } - path = dstdirPath + "/" + filename; + path = dstdirPath + "/" + m_default_prefix + filename; #endif //std::vector quality; //quality.push_back(CV_IMWRITE_JPEG_QUALITY); @@ -710,3 +721,23 @@ Java_com_huagao_scanner_DeviceManager_resetPatchIndex(JNIEnv * env, jobject thiz indexPatch = 0; LOG("JAVA--- clean indexPatch:%d\n", indexPatch); } + + +extern "C" +JNIEXPORT void JNICALL +Java_com_huagao_scanner_DeviceManager_setPrefix(JNIEnv * env, jobject thiz, jstring prefix) +{ + char* cName = const_cast(env->GetStringUTFChars(prefix, 0)); + if (cName) + { + auto len = strlen(cName); + LOG("JAVA--- setPrefix prefix_len = %d prefix = %s \n", len, cName); + if (len > 0) + { + m_default_prefix.resize(len); + memcpy((void*)m_default_prefix.data(), cName, len); + LOG("JAVA--- setPrefix m_default_prefix = %d prefix = %s \n", m_default_prefix.length(), m_default_prefix.c_str()); + } + env->ReleaseStringUTFChars(prefix, cName); + } +} \ No newline at end of file