还原基于文件大小判断twain图像文件传输格式,仍然采用64位或32位判断
This commit is contained in:
parent
1940c573f9
commit
a88eaf3b6b
|
@ -1155,50 +1155,43 @@ HGResult HGTwainDSImpl::ImageNativeXfer(HGUInt type, HGUInt origin, HGImage* ima
|
||||||
return HGTWAIN_ERR_FAIL;
|
return HGTWAIN_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult ret = HGBASE_ERR_FAIL;
|
#ifdef _WIN64
|
||||||
int fileSize = info.ImageWidth * info.ImageLength * info.BitsPerPixel / 8;
|
HANDLE hMem = NULL;
|
||||||
|
if (TWRC_XFERDONE != m_dsmImpl->m_pDSMProc(&m_dsmImpl->m_AppId, &m_iden, DG_IMAGE, DAT_IMAGENATIVEXFER, MSG_GET, &hMem))
|
||||||
if (fileSize < 200 * 1024 * 1024)
|
|
||||||
{
|
{
|
||||||
HANDLE hMem = NULL;
|
return HGTWAIN_ERR_FAIL;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue