已成功为华视读卡器添加身份证照片BASE64编码功能,使得读取身份证时能够同时获取照片的BASE64编码数据。
在 HuaShiIdCardBusiness.cs
中添加了两个华视SDK函数:
[DllImport("Termb.dll", CallingConvention = CallingConvention.StdCall)]
private extern static int Getbase64BMPData(byte[] pData, ref int pLen);
[DllImport("Termb.dll", CallingConvention = CallingConvention.StdCall)]
private extern static int Getbase64JpgData(byte[] pData, ref int pLen);
GetIdCardPhotoBase64()
主要方法GetPhotoBase64Fallback()
备用方法Convert.ToBase64String()
手动转换在 GetIdCardInformation()
方法中新增以下字段:
// 照片信息(BASE64编码)
string photoBase64 = GetIdCardPhotoBase64();
info.Add("photoBase64", photoBase64);
info.Add("hasPhoto", !string.IsNullOrEmpty(photoBase64));
// 照片格式信息
if (!string.IsNullOrEmpty(photoBase64))
{
// 根据BASE64前缀判断图片格式
if (photoBase64.StartsWith("/9j/") || photoBase64.StartsWith("iVBORw0KGgo"))
info.Add("photoFormat", "JPEG");
else if (photoBase64.StartsWith("Qk") || photoBase64.StartsWith("BM"))
info.Add("photoFormat", "BMP");
else
info.Add("photoFormat", "UNKNOWN");
info.Add("photoSize", photoBase64.Length);
}
现在读取身份证时,返回的JSON数据包含以下新字段:
{
"code": 200,
"type": "huashi_idcard",
"message": "华视读卡器读取身份证成功",
"data": {
"name": "张三",
"sex": "男",
"nation": "汉",
"birthday": "19900101",
"idCode": "123456789012345678",
"address": "北京市朝阳区...",
"department": "公安部",
"startDate": "20200101",
"endDate": "20300101",
"sexCode": "1",
"nationCode": "01",
"certType": "I",
"photoBase64": "/9j/4AAQSkZJRgABAQEAYABgAAD...", // 新增
"hasPhoto": true, // 新增
"photoFormat": "JPEG", // 新增
"photoSize": 15420 // 新增
},
"device": "华视电子身份证读卡器"
}
字段名 | 类型 | 说明 |
---|---|---|
photoBase64 |
string | 身份证照片的BASE64编码字符串 |
hasPhoto |
boolean | 是否成功获取到照片数据 |
photoFormat |
string | 照片格式(JPEG/BMP/UNKNOWN) |
photoSize |
number | BASE64编码字符串的长度 |
已创建 test_huashi_photo_base64.html
测试页面,包含:
Getbase64BMPData
和 Getbase64JpgData
函数在DLL中可用photoFormat
字段的值来调试版本: 最新修改 日期: 2024年当前 修改内容: