HarmonyOS 鸿蒙Next 拍照上传身份证及图片加水印有文档参考吗?

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 拍照上传身份证及图片加水印有文档参考吗? 拍照上传身份证,以及图片加水印,鸿蒙有参考文档或者示例吗?

2 回复

可参考以下demo:

第一步:使用cameraPicker拉起系统相机

import picker from '@ohos.multimedia.cameraPicker';
import camera from '@ohos.multimedia.camera';

async openCamera() {
  try {
    let pickerProfile: picker.PickerProfile = {
      cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK
    };
    let pickerResult: picker.PickerResult = await picker.pick(getContext(this),
      [picker.PickerMediaType.PHOTO, picker.PickerMediaType.VIDEO], pickerProfile);
    console.log("the pick pickerResult is:" + JSON.stringify(pickerResult));
    // ...
  } catch (error) {
    let err = error as BusinessError;
    console.error(`the pick call failed. error code: ${err.message}`);
  }
}

第二步:将相机拍摄的照片渲染在页面中,使用fs.readSync读出文件字节流,再使用image.createImageSource创建图片资源管理器获取到图片的pixelMap

@State pixelMap: image.PixelMap | null = null

async openCamera() {
  try {
    // ...
    if (pickerResult.resultUri) {
      this.showImage = true
    }
    let file = fs.openSync(pickerResult.resultUri)
    let buffer = new ArrayBuffer(fs.statSync(file.fd).size)
    fs.readSync(file.fd, buffer)
    let imageSource: image.ImageSource = image.createImageSource(buffer)
    imageSource.getImageInfo((err, value) => {
      if (err) {
        return;
      }
      let opts: image.DecodingOptions = {
        editable: true,
        desiredSize: {
          height: value.size.height,
          width: value.size.width
        }
      };
      imageSource.createPixelMap(opts, async (err, pixelMap) => {
        this.pixelMap = pixelMap
      })
    })
  } catch (error) {
    let err = error as BusinessError;
    console.error(`the pick call failed. error code: ${err.message}`);
  }
}

build() {
  // ...
  if(this.showImage) {
    Image(this.pixelMap).width("100%")
    // ...
  }
}

第三步:使用drawing.TextBlob.makeFromString绘制水印后

addWaterMask(pixelMap: image.PixelMap) {
  this.imageScale = this.imageWidth / display.getDefaultDisplaySync().width
  const canvas = new drawing.Canvas(pixelMap)
  const pen = new drawing.Pen()
  pen.setColor({ alpha: 255, red: 0, green: 10, blue: 10 })
  const font = new drawing.Font()
  font.setSize(32 * this.imageScale)
  let textWidth = font.measureText("初九会画画", drawing.TextEncoding.TEXT_ENCODING_UTF8)
  const brush = new drawing.Brush()
  brush.setColor({ alpha: 255, red: 255, green: 0, blue: 0 })
  const textBlob = drawing.TextBlob.makeFromString("初九会画画", font, drawing.TextEncoding.TEXT_ENCODING_UTF8)
  canvas.attachBrush(brush)
  canvas.attachPen(pen)
  canvas.drawTextBlob(textBlob, this.imageWidth - 20 * this.imageScale - textWidth, this.imageHeight - 20 * this.imageScale)
  canvas.detachBrush();
  canvas.detachPen()
  return pixelMap
}

上传demo:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-file-upload-download-V5

照片添加水印完整demo可参考https://gitee.com/harmonyos_samples/watermark

更多关于HarmonyOS 鸿蒙Next 拍照上传身份证及图片加水印有文档参考吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题“HarmonyOS 鸿蒙Next 拍照上传身份证及图片加水印有文档参考吗?”的问题,以下是专业且直接的回答:

HarmonyOS 鸿蒙Next系统本身并未直接提供针对拍照上传身份证及图片加水印的官方文档。然而,鸿蒙系统作为华为推出的新一代智能终端操作系统,支持丰富的API和开发框架,开发者可以利用这些资源来实现所需功能。

对于拍照上传身份证的功能,开发者可以参考鸿蒙系统的相机API来实现图像采集。至于图片加水印,则可以通过图像处理库或自定义绘制逻辑来完成。这些功能通常需要结合鸿蒙系统的UI框架和图形处理能力进行开发。

虽然鸿蒙系统没有直接的官方文档涵盖这一特定场景,但开发者可以通过查阅鸿蒙系统的开发文档、API参考以及社区论坛等资源,获取相关的开发指导和示例代码。此外,也可以参考其他操作系统或平台上类似功能的实现方式,结合鸿蒙系统的特性进行适配和开发。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。在这里,你可以获得更专业的技术支持和解答。

回到顶部