九江网站建设_北京网站设计公司_成都网站制作公司_蚌埠网站制作公司

网站建设制作多少钱

深圳的网站建设公司、网站建设 推广、永久使用、不限域名、建设网站的企业

app软件定制开发?

九江网站建设_北京网站设计公司_成都网站制作公司_蚌埠网站制作公司

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,};}, 佛山网站建设惠州网站制作公司网站建设报价深圳网站制作费用制作微网站公司企业设计网站公司深圳外贸网站建设光谷网站建设商城网站设计公司衡阳网站建设网站建设开发网站建设制作广州制作网站seo深圳网站开发电子商务网站设计婚庆公司网站建设龙岗网站制作徐州网站制作专业网页制作九江网站建设手机网站模板日照网站建设合肥网站建设商丘网站建设网站开发背景网站建设网站定制深圳网页制作企业自助建站系统合肥网站建设长春网站制作网站网站建设网站

猜你喜欢