HarmonyOS鸿蒙Next中怎么读取身份证识别后的照片文件

HarmonyOS鸿蒙Next中怎么读取身份证识别后的照片文件

使用CardRecognition(卡证识别控件)识别出身份证信息后,希望进一步读取识别结果中的身份证照片文件,一方面,可以将原图发到服务器,另一方面,可以从图片扣取人脸照片。

问题:

  1. 采用ArtUI组件Image不能显示身份证图片(估计也是没有权限)

  2. 如何打开照片文件?

await fs.openSync(params.cardInfo?.front?.cardImageUri, fs.OpenMode.READ_ONLY)

读取文件,返回错误代码“13900001”,Operation not permitted。

CardRecognition(卡证识别控件)在5.0.2(14)版本后,增加了配置IdCardConfig参数,通过设置isPhotoNeeded决定是否返回身份证中的人脸照片信息。

是不是在5.0.2(14)版本后可以读取身份证照片,还是在5.0.2(14)版本后可以不返回params.cardInfo?.front?.cardImageUri了(如果不能读取照片,这个cardImageUri和originalImageUri没有什么用处)

(目前我的真机测试机型mate60还不能升级到新的API版本)


更多关于HarmonyOS鸿蒙Next中怎么读取身份证识别后的照片文件的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中读取身份证识别后的照片文件,可使用@ohos.file.fs API。身份证识别后,照片通常存储在应用沙箱目录或指定路径。通过fs.openSync()获取文件描述符,使用fs.readSync()读取二进制数据。若需转为base64,可用util.base64Encode()。注意文件路径需使用绝对路径,并确保应用已申请ohos.permission.READ_MEDIA权限。

更多关于HarmonyOS鸿蒙Next中怎么读取身份证识别后的照片文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中读取身份证识别后的照片文件需要注意以下几点:

  1. 权限问题:确保应用已申请ohos.permission.READ_MEDIA权限,这是访问媒体文件的必要权限。

  2. 文件路径处理:CardRecognition返回的cardImageUri是content://格式的URI,不能直接用fs.openSync操作。需要使用@ohos.file.fs模块的open接口配合Uri权限来访问:

import fileUri from '@ohos.file.fileuri';

let uri = fileUri.getUriFromPath(params.cardInfo?.front?.cardImageUri);
let file = await fs.open(uri, fs.OpenMode.READ_ONLY);
  1. 版本差异:在5.0.2(14)版本后:
  • isPhotoNeeded参数控制是否返回人脸照片
  • cardImageUri仍然会返回,但需要通过正确的方式访问
  • originalImageUri保存原始拍摄图像
  1. 兼容性方案:可以先检查API版本,对于老版本使用备用方案(如提示用户手动选择照片)。

  2. 图片显示:使用Image组件显示时,确保传入的是有效的URI路径,必要时先转换为本地可访问路径。

注意:实际使用时需要处理异常情况,并确保在真机测试时使用匹配的SDK版本。

回到顶部