HarmonyOS CardRecognition卡证识别拿到的身份证uri,如何获取到身份证图片?

HarmonyOS
2024-12-27 16:27:22
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

整体思路:

1、只读打开文件

2、复制到本应用沙箱中

3、做图片展示

示例代码:

import { CardRecognition, CallbackParam, CardType } from "@kit.VisionKit";
import { hilog } from '@kit.PerformanceAnalysisKit';
import fs from '@ohos.file.fs';
import { image } from '@kit.ImageKit';
/**
 * 卡证识别页
 * 卡证识别显示身份证照片
 * @since 2024-06-27
 */
@Entry
@Component
export struct cardRecognitionPage {
  private myFile: fs.File | undefined = undefined;
  private myFile1: fs.File | undefined = undefined;
  @State pixelMap: PixelMap | undefined = undefined;
  @State pixelMap1: PixelMap | undefined = undefined;

  build() {
    Stack({ alignContent: Alignment.Top }) {
      CardRecognition({
        supportType: CardType.CARD_ID,
        callback: (async (params: CallbackParam) => {
          try {
            // front 是人像,back 是国徽
            this.myFile = await fs.openSync(params.cardInfo?.front?.cardImageUri, fs.OpenMode.READ_ONLY)
            this.myFile1 = await fs.openSync(params.cardInfo?.back?.cardImageUri, fs.OpenMode.READ_ONLY)
          } catch (e) {
            hilog.info(0x0001, TAG, `params params cardInfo back error: ${JSON.stringify(e)}`)
          }

          let context = getContext(this);
          let pathDir = context.filesDir;
          hilog.info(0x0001, TAG, `params params cardInfo pathDir: ${JSON.stringify(pathDir)}`)

          // 正反面两张照片都拷贝进应用沙箱
          fs.copyFileSync(this.myFile?.fd, pathDir + '/wy.jpeg');
          fs.copyFileSync(this.myFile1?.fd, pathDir + '/wy1.jpeg');

          // 判断照片拷贝是否成功
          console.log('params params copy result: ' + fs.accessSync(pathDir + '/xx.jpeg'))
          fs.close(this.myFile)

          // 取人像面转换成可显示的类型
          let imageSourceApi = image.createImageSource(pathDir + '/xx.jpeg');
          let pixelMap: image.PixelMap = imageSourceApi.createPixelMapSync();
          this.pixelMap = pixelMap
        })
      })
      Column() {
        //显示人像面
        Image(this.pixelMap)// .bindContextMenu(this.MenuBuilder(item), ResponseType.LongPress)
          .objectFit(ImageFit.Contain)
          .autoResize(false)
      }
    }
    .width('100%')
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
2024-12-27 18:30:45
相关问题
HarmonyOS nfc识别身份证能力
687浏览 • 1回复 待解决
HarmonyOS 是否具备身份证OCR识别能力
681浏览 • 1回复 待解决
HarmonyOS OCR扫银行身份证能力
422浏览 • 1回复 待解决
HarmonyOS 身份证nfc读取规范
475浏览 • 1回复 待解决
HarmonyOS 身份证ocr技术对接接口文档
361浏览 • 1回复 待解决
HarmonyOS 识别CardRecognition
413浏览 • 1回复 待解决
HarmonyOS 识别类问题
418浏览 • 1回复 待解决
HarmonyOS 识别控件问题咨询
218浏览 • 1回复 待解决
HarmonyOS 识别率低
301浏览 • 1回复 待解决
HarmonyOS 活体检测和识别的demo
357浏览 • 1回复 待解决