From a88eaf3b6ba86d7a623356158a963eaa18f58649 Mon Sep 17 00:00:00 2001 From: yangjiaxuan <171295266@qq.com> Date: Tue, 2 Jul 2024 16:05:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=98=E5=8E=9F=E5=9F=BA=E4=BA=8E=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=A4=A7=E5=B0=8F=E5=88=A4=E6=96=ADtwain=E5=9B=BE?= =?UTF-8?q?=E5=83=8F=E6=96=87=E4=BB=B6=E4=BC=A0=E8=BE=93=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=EF=BC=8C=E4=BB=8D=E7=84=B6=E9=87=87=E7=94=A864=E4=BD=8D?= =?UTF-8?q?=E6=88=9632=E4=BD=8D=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/twain_user/HGTwainImpl.cpp | 75 ++++++++++++++---------------- 1 file changed, 34 insertions(+), 41 deletions(-) diff --git a/modules/twain_user/HGTwainImpl.cpp b/modules/twain_user/HGTwainImpl.cpp index d797f860..4c54fd25 100644 --- a/modules/twain_user/HGTwainImpl.cpp +++ b/modules/twain_user/HGTwainImpl.cpp @@ -1155,50 +1155,43 @@ HGResult HGTwainDSImpl::ImageNativeXfer(HGUInt type, HGUInt origin, HGImage* ima return HGTWAIN_ERR_FAIL; } - HGResult ret = HGBASE_ERR_FAIL; - int fileSize = info.ImageWidth * info.ImageLength * info.BitsPerPixel / 8; - - if (fileSize < 200 * 1024 * 1024) +#ifdef _WIN64 + HANDLE hMem = NULL; + if (TWRC_XFERDONE != m_dsmImpl->m_pDSMProc(&m_dsmImpl->m_AppId, &m_iden, DG_IMAGE, DAT_IMAGENATIVEXFER, MSG_GET, &hMem)) { - HANDLE hMem = NULL; - if (TWRC_XFERDONE != m_dsmImpl->m_pDSMProc(&m_dsmImpl->m_AppId, &m_iden, DG_IMAGE, DAT_IMAGENATIVEXFER, MSG_GET, &hMem)) - { - return HGTWAIN_ERR_FAIL; - } - - HGStream stream = NULL; - ret = HGBase_CreateDIBStream(hMem, &stream); - GlobalFree(hMem); - if (HGBASE_ERR_OK != ret) - { - return ret; - } - - ret = HGBase_CreateImageFromStream(stream, NULL, type, origin, image); - HGBase_DestroyStream(stream); - } - else - { - HGChar tmpFile[260]; - HGBase_GetTmpFileName("bmp", tmpFile, 260); - - TW_SETUPFILEXFER xfer = {0}; - strcpy(xfer.FileName, tmpFile); - xfer.Format = TWFF_BMP; - if (TWRC_SUCCESS != m_dsmImpl->m_pDSMProc(&m_dsmImpl->m_AppId, &m_iden, DG_CONTROL, DAT_SETUPFILEXFER, MSG_SET, &xfer)) - { - return HGTWAIN_ERR_FAIL; - } - - if (TWRC_XFERDONE != m_dsmImpl->m_pDSMProc(&m_dsmImpl->m_AppId, &m_iden, DG_IMAGE, DAT_IMAGEFILEXFER, MSG_GET, NULL)) - { - return HGTWAIN_ERR_FAIL; - } - - ret = HGBase_CreateImageFromFile(tmpFile, NULL, type, origin, image); - HGBase_DeleteFile(tmpFile); + return HGTWAIN_ERR_FAIL; } + HGStream stream = NULL; + HGResult ret = HGBase_CreateDIBStream(hMem, &stream); + GlobalFree(hMem); + if (HGBASE_ERR_OK != ret) + { + return ret; + } + + ret = HGBase_CreateImageFromStream(stream, NULL, type, origin, image); + HGBase_DestroyStream(stream); +#else + HGChar tmpFile[260]; + HGBase_GetTmpFileName("bmp", tmpFile, 260); + + TW_SETUPFILEXFER xfer = {0}; + strcpy(xfer.FileName, tmpFile); + xfer.Format = TWFF_BMP; + if (TWRC_SUCCESS != m_dsmImpl->m_pDSMProc(&m_dsmImpl->m_AppId, &m_iden, DG_CONTROL, DAT_SETUPFILEXFER, MSG_SET, &xfer)) + { + return HGTWAIN_ERR_FAIL; + } + + if (TWRC_XFERDONE != m_dsmImpl->m_pDSMProc(&m_dsmImpl->m_AppId, &m_iden, DG_IMAGE, DAT_IMAGEFILEXFER, MSG_GET, NULL)) + { + return HGTWAIN_ERR_FAIL; + } + + HGResult ret = HGBase_CreateImageFromFile(tmpFile, NULL, type, origin, image); + HGBase_DeleteFile(tmpFile); +#endif return ret; }