From fcd1fd04485aefc17dcc04185d8e4de831178629 Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@qq.com> Date: Tue, 14 Nov 2023 12:38:12 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3websdk=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=97=B6dpi=E4=B8=8D=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdk/webservice/ManagerV2.cpp | 31 +++++++++++++++++++++++++++++++ sdk/webservice/ManagerV2.h | 2 ++ 2 files changed, 33 insertions(+) diff --git a/sdk/webservice/ManagerV2.cpp b/sdk/webservice/ManagerV2.cpp index b88fd30d..e27cc767 100644 --- a/sdk/webservice/ManagerV2.cpp +++ b/sdk/webservice/ManagerV2.cpp @@ -70,6 +70,7 @@ namespace ver_2 m_scanTemp = false; m_scanning = false; m_scanEvent = NULL; + m_dpi = 200; HGChar cfgPath[256]; HGBase_GetConfigPath(cfgPath, 256); @@ -1493,6 +1494,7 @@ namespace ver_2 m_scanTemp = temp; HGBase_CreateEvent(HGFALSE, HGFALSE, &m_scanEvent); assert(NULL != m_scanEvent); + m_dpi = GetDpi(); SANE_Status status = sane_start(m_devHandle); if (SANE_STATUS_GOOD != status) @@ -1502,6 +1504,7 @@ namespace ver_2 m_scanEvent = NULL; m_scanBlankCheck = false; m_scanTemp = false; + m_dpi = 200; return -1; } @@ -1530,6 +1533,7 @@ namespace ver_2 m_scanBlankCheck = false; m_scanTemp = false; m_scanning = false; + m_dpi = 200; errInfo.clear(); return 0; @@ -4139,6 +4143,31 @@ namespace ver_2 } } + HGUInt ManagerV2::GetDpi() + { + HGUInt dpi = 200; + SANE_Int num_dev_options = 0; + sane_control_option(m_devHandle, 0, SANE_ACTION_GET_VALUE, &num_dev_options, nullptr); + for (int i = 1; i < num_dev_options; ++i) + { + const SANE_Option_Descriptor* desp = sane_get_option_descriptor(m_devHandle, i); + if (nullptr == desp) + continue; + + if (SANE_TYPE_INT == desp->type) + { + SANE_Int value = 0; + sane_control_option(m_devHandle, i, SANE_ACTION_GET_VALUE, &value, nullptr); + if (0 == strcmp(desp->name, SANE_STD_OPT_NAME_RESOLUTION)) + { + dpi = (HGUInt)value; + } + } + } + + return dpi; + } + int ManagerV2::sane_ex_callback(SANE_Handle hdev, int code, void* data, unsigned int* len, void* param) { (void)hdev; @@ -4286,6 +4315,8 @@ namespace ver_2 HGBase_CreateImageFromData(data, &imgInfo, NULL, 0, HGBASE_IMGORIGIN_TOP, &img); if (NULL != img) { + HGBase_SetImageDpi(img, p->m_dpi, p->m_dpi); + HGBool blank = HGFALSE; if (p->m_scanBlankCheck) HGImgProc_ImageBlankCheck(img, NULL, &blank); diff --git a/sdk/webservice/ManagerV2.h b/sdk/webservice/ManagerV2.h index 0cbfa402..91da3dff 100644 --- a/sdk/webservice/ManagerV2.h +++ b/sdk/webservice/ManagerV2.h @@ -297,6 +297,7 @@ namespace ver_2 void ExchangeBindFolderImage(const std::vector& tables, int imageIndex1, int imageIndex2); void ClearBindFolderImageList(const std::vector& tables); + HGUInt GetDpi(); static int sane_ex_callback(SANE_Handle hdev, int code, void* data, unsigned int* len, void* param); static void HGAPI ThreadFunc(HGThread thread, HGPointer param); @@ -319,6 +320,7 @@ namespace ver_2 bool m_scanTemp; bool m_scanning; HGEvent m_scanEvent; + HGUInt m_dpi; sqlite3* m_sqlite; std::string m_currBatchId;