网站建设 制作_网络推广方法技巧_小程序开发公司推荐_专业ppt代做

温州网站建设技术托管

搭建电子商务平台、房地产销售好做吗、永久使用、不限域名、中国科技成就

无锡建设网站的公司?

网站建设 制作_网络推广方法技巧_小程序开发公司推荐_专业ppt代做

export default {name: "Ocr",components: { TopNavbar, Left, Camera, Canvas },setup() {//camera实例const camera = Taro.createCameraContext();//系统信息const systemInfo = useSystemInfoStore();//系统文件服务const fileManager = Taro.getFileSystemManager();//登录用户信息const loginUserStore = useLoginUserStore(store);//头部refconst topbarRef = ref(null);const state = reactive({//识别中isImgLoading: true,//是否正在识别isOcrLoading: false,//转存图片的定时器timer: null,//cor识别内容ocrContent: "",//头部导航栏topBaRefHight: 0,//ocr识别组件的展示img: require("@/assets/imgs/icon-x.png"),//状态栏高度topBarHight: systemInfo.getState.statusBarHeight,//底部导航栏高度bottomBarHight: systemInfo.getState.bottomBarHeight? systemInfo.getState.bottomBarHeight: 0,//是否显示canvascanvasShow: false,//canvas相关计算info: {windowWidth: 0,windowHeight: 0,},//canvas相关计算canvasWidth: 0,canvasHeight: 0,convasX: 0,convasXL: 0,convasY: 0,//图片相关baseImg: "",isBaseImg: false,isCanvas: false,//识别的照相路径srcCanvasPath: "",});//初始化数据const initData = () => {var statusBarHeight = 0;Taro.getSystemInfo({success: (res) => {statusBarHeight = res.statusBarHeight; //状态栏高度state.info.windowHeight = res.windowHeight;state.info.windowWidth = res.windowWidth;state.convasX = res.screenWidth / 4; //遮罩层上下的高度(生成canvas的起始横坐标)state.convasY = res.screenHeight / 5; //遮罩层左右的宽度(生成canvas的起始纵坐标)state.canvasWidth = state.convasX * 3; //中间裁剪部位的宽度state.canvasHeight = state.convasY * 3; //中间裁剪部位的高度state.convasXL = state.convasX / 2;},});//获取胶囊对象var menuButtonObject = Taro.getMenuButtonBoundingClientRect();let menuBottonHeight = menuButtonObject.height; //胶囊高度let menuBottonTop = menuButtonObject.top; //胶囊距离顶部距离state.topBaRefHight =statusBarHeight +menuBottonHeight +(menuBottonTop - statusBarHeight) * 2; //胶囊距离顶部距离};//回退路由 携带好识别信息const evtBack = () => {state.isImgLoading = true;router.back({ data: state.ocrContent });};// Retrieve system info and set top and bottom bar heightsonMounted(async () => {//state.topBarHight = statusBarHeight;//state.bottomBarHight = bottomBarHeight;initData();});//重新拍照const reTakePhoto = () => {//清除定时器停止缓存clearTimeout(state.timer);const canvaCtx = Taro.createCanvasContext("myCanvas", this);canvaCtx.clearRect(0, 0, state.canvasWidth, state.canvasHeight);canvaCtx.draw();state.isOcrLoading = false;state.isImgLoading = true;state.canvasShow = false;};//剪切图片const drawImage = (filepath) => {const ctx = Taro.createCanvasContext("myCanvas", this);Taro.getImageInfo({src: filepath,success: (imgInfo) => {// 我这里宽度和高度都计算了设备比,其实两个值是一样的 ,计算一个就够了let prxHeight = state.info.windowHeight / imgInfo.height; //计算设备比let prxWidth = state.info.windowWidth / imgInfo.width; //计算设备比let canvasWidth = state.canvasWidth;let canvasHeight = state.canvasHeight;//生成ctx.clearRect(0, 0, canvasWidth, canvasHeight);ctx.drawImage(filepath,state.convasXL / prxWidth,(state.convasY - 40) / prxHeight,canvasWidth / prxWidth,canvasHeight / prxHeight,0,0,canvasWidth,canvasHeight);ctx.draw(false, () => {// 增加延迟,等待图片资源加载完成state.timer = setTimeout(() => {Taro.canvasToTempFilePath({canvasId: "myCanvas",success: (res) => {const tempFilePath = res.tempFilePath;//uploadFile(tempFilePath);console.log(tempFilePath);state.isBaseImg = false;state.isCanvas = false;state.baseImg = tempFilePath;state.srcCanvasPath = tempFilePath;state.isImgLoading = false;},fail: (res) => {// 转换为临时文件失败state.isImgLoading = false;Taro.showToast({title: "转换为临时文件失败",duration: 2000,icon: "none",});},},this);}, 2000); // 增加延迟时间,单位为毫秒});},fail: (res) => {// Handle getImageInfo failureTaro.showToast({title: "获取图片信息失败",duration: 2000,icon: "none",});},});};//开始ocr识别const startOcr = () => {//防止连续识别if(state.isOcrLoading){return;}state.isOcrLoading = true;//识别中Taro.showToast({title: "识别中",icon: "loading",duration: 100000,});//上传文件然后识别uploadFile(state.srcCanvasPath);};//文件上传服务 l is not a constructorconst uploadFile = (filepath) => {let file;fileManager.readFile({filePath: filepath,success: (res) => {//读取文件成功file = res.data;//上传给后端 MultipartFile photo 进行解析//上传文件之前剪切照片 将照片按中心剪切然后上传Taro.uploadFile({//TODO constants.taroReqUrl.ocrurl: constants.taroReqUrl.ocr,filePath: filepath,name: "photo",header: {"content-type": "multipart/form-data",Authorization: loginUserStore.token,},success: (res) => {//上传成功//解析成功try {const data = JSON.parse(res.data);state.ocrContent = data.data.content;state.isOcrLoading = false;Taro.hideToast();//识别完成跳转回去evtBack();} catch (e) {state.isOcrLoading = false;Taro.hideToast();//上传失败Taro.showToast({title: "Ocr服务异常",duration: 2000,icon: "none",});}},fail: (res) => {state.isOcrLoading = false;Taro.hideToast();//上传失败Taro.showToast({title: "Ocr服务异常",duration: 2000,icon: "none",});},});},fail: (res) => {Taro.hideToast();//读取文件失败Taro.showToast({title: "文件处理中,请稍后重试",duration: 2000,icon: "none",});},});};//拍照const takePhoto = () => {camera.takePhoto({quality: "high",success: (res) => {//拍照成功const filepath = res.tempImagePath;state.canvasShow = true;drawImage(filepath);state.baseImg = filepath;state.isBaseImg = true;state.isCanvas = true;//上传文件//uploadFile(filepath);},fail: (res) => {//拍照失败 弹出提示框拍照失败 请检查权限Taro.showToast({title: "拍照失败",duration: 2000,icon: "none",});},});};return {...toRefs(state),takePhoto,evtBack,topbarRef,reTakePhoto,startOcr,};}, 成都建设网站企业电话武汉网站建设设计制作网站素材app首页设计模板开发网站用什么语言产品宣传小视频制作国内专业的室内设计网站网页无法访问未连接上服务器网页设计实训报告1500字通用品牌视觉设计包含什么制作一个网站一般先要明确建筑工程网上报建网站网站交互设计网站关于我们页面设计微信商城开通多少钱深圳建网站公司哪家好北京疫情最新死亡人是谁宁阳网站建设价格南昌模板建站定制网站烟台网站建设开发服务器托管公司成都百度推广公司电话在线客服系统有哪些厦门网站建设方案服务上海城乡建设和住房建设官网重庆建站网站免费保定模板建站平台网站优化北京seo成都网站建站推广外贸公司是干什么的张家界网站seo

猜你喜欢

  • 友情链接:
  • 上海最新情况 高端网站设计品牌 ui设计师的工作内容是什么 徐州做网站需要多少钱 哈尔滨网站建设运营 重庆提供行业网站建站报价