标题:身份证识别仪读取的照片数据如何转成图片?
只看楼主
hyswcyh01
Rank: 2
等 级:论坛游民
帖 子:64
专家分:47
注 册:2016-7-17
结帖率:100%
已结贴  问题点数:10 回复次数:6 
身份证识别仪读取的照片数据如何转成图片?
这里是代码,在坛子里找的!
我在prg里调试后,可以显示字符数据,不能生成照片文件。
程序代码:
clear dlls
clear
DECLARE Integer SDT_OpenPort IN sdtapi.dll Integer iPort
DECLARE Integer SDT_ClosePort IN sdtapi.dll Integer iPort
DECLARE Integer SDT_StartFindIDCard IN sdtapi.dll Integer iPort, String @pucManaInfo, Integer iIfOpen 
DECLARE Integer SDT_SelectIDCard IN sdtapi.dll Integer iPort, String @pucManaMsg, Integer iIfOpen 
DECLARE Integer SDT_ReadBaseMsg IN sdtapi.dll Integer iPort, String @pucCHMsg, Integer @puiCHMsgLen, String @pucPHMsg, Integer @puiPHMsgLen, Integer iIfOpen

LOCAL iRet As Integer && 返回码 
LOCAL iPort As Integer && 端口号 
LOCAL iIfOpen As Integer && 是否需要打开端口 
LOCAL pucManaInfo As String
LOCAL pucManaMsg As String
LOCAL pucCHMsg As String && 文字信息 
LOCAL pucPHMsg As String && 照片信息 
LOCAL pucFPMsg As String && 指纹信息 
LOCAL uiCHMsgLen As Integer, uiPHMsgLen As Integer

iRet = 0
pucManaInfo = SPACE(4)
pucManaMsg = SPACE(8)
pucCHMsg = SPACE(512)
pucPHMsg = SPACE(1024)
pucFPMsg = SPACE(1024)
uiCHMsgLen = 0
uiPHMsgLen = 0
iPort = 1001 && 端口在系统设置下设置 1001为USB 设备
iIfOpen = 0

IF iIfOpen = 0
   iRet = SDT_OpenPort(iPort)
   IF iRet != 0x90
      MESSAGEBOX("SDT_OpenPort 错误, 错误代码为 " + LTRIM(STR(iRet)), 16, '错误')
      SDT_ClosePort(iPort) 
      RETURN
   ENDIF
ENDIF

DO WHILE .T. && 找卡 
   iRet = SDT_StartFindIDCard(iPort, @pucManaInfo, iIfOpen) 
   IF iRet = 0x9f
      iRet = SDT_SelectIDCard(iPort, @pucManaMsg, iIfOpen) 
      IF iRet == 0x90
         EXIT
      ENDIF
   ENDIF
   IF MESSAGEBOX("没有找到身份证,请放身份证?", 32 + 4, '询问') <> 6
      EXIT
   ENDIF
ENDDO

iRet = SDT_ReadBaseMsg(iPort, @pucCHMsg, @uiCHMsgLen, @pucPHMsg, @uiPHMsgLen, iIfOpen) 
IF iRet != 0x90 
   MESSAGEBOX("SDT_ReadBaseMsg 错误, 错误代码为 " + LTRIM(STR(iRet)), 16, '错误')
   IF iIfOpen = 0
      SDT_ClosePort(iPort) 
      RETURN 
   ENDIF 
ENDIF

tmp_read=STRCONV(left(pucCHMsg,uiCHMsgLen),6)
xm_read=ALLTRIM(LEFTC(tmp_read,15)) &&读出的字符串前15位是姓名
xbpd=SUBSTRC(tmp_read,16,1)  &&读出的字符串前16位是性别,1代表男,2代表女
mzpd=SUBSTRC(tmp_read,17,2)  &&读出的字符串前17-18位是民族,01是汉族
tmp_rq=SUBSTRC(tmp_read,19,8) &&读出的字符串前19-25位是出生日期

IF xbpd="1"
   xb_read="男"
ELSE
   xb_read="女"
ENDIF
***********这里翻译民族的有没有更好方法?
DO CASE
   CASE mzpd="01"
        mz_read="汉"
ENDCASE
csrq_read=LEFT(tmp_rq,4)+'.'+SUBSTR(tmp_rq,5,2)+'.'+SUBSTR(tmp_rq,7,2)
dz_read=SUBSTRC(tmp_read,27,35)  &&地址的数据
sfzhm_read=SUBSTRC(tmp_read,62,18)  &&身份证号码的数据
qfjg_read=ALLTRIM(SUBSTRC(tmp_read,80,15))  &&签发机关的数据
tmp_rqq=SUBSTRC(tmp_read,95,8)  &&签发日期
tmp_rqz=SUBSTRC(tmp_read,103,8)  &&有限期限
yxqq_read=LEFT(tmp_rqq,4)+'.'+SUBSTR(tmp_rqq,5,2)+'.'+SUBSTR(tmp_rqq,7,2)
yxqz_read=LEFT(tmp_rqz,4)+'.'+SUBSTR(tmp_rqz,5,2)+'.'+SUBSTR(tmp_rqz,7,2)
qtxx_read=RIGHTC(tmp_read,18)  &&其他内容,暂时不知道是什么

*photo_tmp=SYS(5)+SYS(2003)+"\"+ALLTRIM(xm_read)+alltrim(sfzhm_read)+".bmp" &&这里是获得照片的程序
photo_tmp=SYS(5)+SYS(2003)+"\"+ALLTRIM(xm_read)+alltrim(sfzhm_read)+".wlt" &&这里是获得照片的程序
=STRTOFILE(LEFT(pucPHMsg,uiPHMsgLen),photo_tmp)
*kk=Strconv(LEFT(pucPHMsg,uiPHMsgLen),6)
*dd=Strconv(LEFT(pucPHMsg,uiPHMsgLen),5)
*STRTOFILE(dd,photo_tmp)
**************可以生成wlt文件,如何转成图片。
? xm_read
? xb_read
? mz_read
? csrq_read
? dz_read
? sfzhm_read
? qfjg_read
? yxqq_read
? yxqz_read
? qtxx_read
IF iIfOpen = 0 &&关闭端口
   SDT_ClosePort(iPort) 
   clear dlls
   RETURN 
ENDIF
clear dlls


生成的wlt文件:
xp.rar (1.39 KB)
搜索更多相关主题的帖子: 身份证 color 图片 照片 如何 
2016-08-06 17:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
按理识别仪有提供相关处理功能,不会让用户去折腾。
2016-08-06 17:29
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
这是搜索到的资料:
照片的数据保存在pucPHMsg变量,将pucPHMsg中的照片数据保存为.wlt文件,再用GetBmp函数转成Bmp文件。
看看是否有GetBmp函数
2016-08-06 17:45
hyswcyh01
Rank: 2
等 级:论坛游民
帖 子:64
专家分:47
注 册:2016-7-17
得分:0 
谢谢 吹水佬 !已解决!

DECLARE Integer GetBmp IN WltRS.dll String Wlt_File , Integer intf
intf=2
GetBmp(photo_tmp,intf)


这是代码!前面省略!结贴!
2016-08-07 09:48
tack
Rank: 1
等 级:新手上路
帖 子:24
专家分:3
注 册:2015-12-22
得分:0 
楼主用的哪个型号的读卡器,谢谢
2016-08-16 22:30
hyswcyh01
Rank: 2
等 级:论坛游民
帖 子:64
专家分:47
注 册:2016-7-17
得分:0 
华视 CVR-100JF
2016-08-19 15:11
冯军
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-8-23
得分:0 
吹水佬您好,方便联系吗?
2021-08-23 23:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-467615-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025887 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved