APP开发-使用Vue3+vant+html5+ 实现相机拍照,选取相册图片,裁剪图片以及提取图片中的文字等功能

Posted L_不觉晓晓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了APP开发-使用Vue3+vant+html5+ 实现相机拍照,选取相册图片,裁剪图片以及提取图片中的文字等功能相关的知识,希望对你有一定的参考价值。

没用使用过html5+请参考另一篇博客:如何在Vue项目里面使用Html5+

一、需求分析

1、可以选择相机拍照,或者选择相册图片
2、图片确定以后,要对图片进行裁剪,保留用户选择部分
3、对裁剪之后的图片进行文字识别,识别出所有的文字内容
4、根据识别出来的文字进行业务查询

二、调用摄像头和相册功能的实现

对于第一个需求我们可以使用vant里面的Uploader组件直接进行调用,但是在这个地方我们的显示样式不同,
所以需要我们在手写一个调用相机和相册的方式,这里要使用html5+ 的方法。
对于没有固定样式要求的我还是推荐使用Uploader组件,因为它已经封装了我们需要的调用相机、相册、文件等,用起来还是比较方便。
我们在做评价的时候,上传图片就是直接使用Uploader,还是比较方便的。
这是Uploader组件的显示方式,

这个是需求的显示方式

显示这个需求方式挺容易实现的。

完整的效果图

2.1 首先要给扫描图标加一个点击事件

<div>
    <!--扫一扫-->
 	<van-icon @click="scanFlag = true;" name="scan" size="24" color="#000"
            class="v-cion-class"/>
</div>

2.2 click()绑定一个点击事件,使用vant的ActionSheet组件,此组件主要是通过v-model:show这个属性来控制是否显示动作面板,:actios来显示动作面板的内容。

<van-action-sheet
      v-model:show="scanFlag"
      :actions="actions"
      cancel-text="取消"
      close-on-click-action
      @select="selectScan"
/>

2.3 js代码

默认scanFlag是false,也就是说默认是不显示动作面板的,当我们进行图标点击之后,将scanFlag变为true,这时候就会显示面板内容,actios的内容就是我们动作面板要展示的选项信息。

     setup() 	
	  const state = reactive(
		scanFlag: false, // 扫描选项	
      	actions: [ // 选项	
         	
           name: '拍照',	
           id: 0,	
         ,	
         	
           name: '相册选图',	
           id: 1,	
         ,	
      	 ],
	  ) 	
    ;

2.4 根据步骤2的代码我们已经知道,动作面板组件里面还绑定着@select事件,也就是说当我们选择分享面板的选项内容的时候,会触发这个事件。

2.4.1 利用Html5+ 来调用摄像头

html5+ 官网网址如下
http://www.html5plus.org/doc/zh_cn/camera.html

2.4.2 首先,我们要获取摄像头的实例化对象,方法如下:

2.4.3 其次,获取对象以后,进行拍照操作

2.4.4在captureImage这个方法里面有两个必选参数,说明如下,但options不填则是默认参数

2.4.5 通过上个方法我们已经可以获取到拍摄照片之后,照片的路径。我们还要在根据照片路径来获取照片对象

方法说明:

2.4.6 总结:完整js代码如下,当选择相册的时候也是同理调用html5+打开相册的方法
   setup() 
	const selectScan = (action) => 
      if (action.id === 0) 
        // 获取摄像头对象
        const cmr = plus.camera.getCamera();
        // 唤醒摄像头拍摄
        cmr.captureImage((path) => 
          // 获取图片地址
          plus.io.resolveLocalFileSystemURL(path, (entry) => 
            router.push(
              path: '/cropper',
              query: 
                imgUrl: entry.toLocalURL(),
              ,
            );
          , () => 
            // 读取文件失败的场合
            proxy.$toast('读取拍照文件错误');
          );
        , () => 
          // 关闭摄像头的场合
        , 
          optimize: false, // 不优化图片
          index: '1', // 选择后摄像头
        );
       else 
        // 调用h5+plus方法打开手机相册选择图片
        plus.gallery.pick((path) => 
          router.push(
            path: '/cropper',
            query: 
              imgUrl: path,
            ,
          );
        ,function () 
          // 取消选择图片的场合
        ,system:false);// 最多选择1张图片
      
    ;
   ;

从相册选择照片-页面效果图

三、下一篇讲述我们把获取到的图片如何进行裁剪

以上是关于APP开发-使用Vue3+vant+html5+ 实现相机拍照,选取相册图片,裁剪图片以及提取图片中的文字等功能的主要内容,如果未能解决你的问题,请参考以下文章

APP开发-Vue3+Vant+Html5+ 实现管理应用缓存以及清除缓存

APP开发-Vue3+Vant+Html5+ 实现管理应用缓存以及清除缓存

APP开发-使用Vue3+vant+html5+ 实现相机拍照,选取相册图片,裁剪图片以及提取图片中的文字等功能

APP开发-使用Vue3+vant+html5+ 实现相机拍照,选取相册图片,裁剪图片以及提取图片中的文字等功能

APP开发-使用Vue3+vant+html5+ 实现相机拍照,选取相册图片,裁剪图片以及提取图片中的文字等功能

APP开发-使用Vue3+vant+html5+ 实现相机拍照,选取相册图片,裁剪图片以及提取图片中的文字等功能