当前位置: 首页 > news >正文

记录一次前端绘画海报的过程及遇到的几个问题

先看效果

在这里插入图片描述

使用工具 html2canvas

import html2canvas from 'html2canvas'// 绘画前的内容  我就不过多写了<div class="content" ref="contentRef" v-show="!imgShow"><img :src="getReplaceImg(friendObj.coverUrl)" alt="" class="topImg">
</div>//  canvas 绘画后的东西<div class="content padding0" v-show="imgShow"><van-icon name="cross" class="vanCross" @click.stop="clickDelete"/><img :src="imageUrl" alt="" class="bigImg"></div>//对前端html内容进行绘画
onLongPress(){setTimeout(() => {//生成图片let that = this;let drewPoster = that.$refs.contentRefhtml2canvas(drewPoster, {dpi: 300, //解决生产图片模糊useCORS: true,allowTaint: false,logging: false,}).then(function (canvas) {that.imageUrl = canvas.toDataURL("image/png");that.imgShow = trueToast.clear()})})},
// 但是因为前端中有img标签导致画的时候跨域了

解决跨域方法1 用 images.weserv.nl 公共图片库

if (process.env.NODE_ENV === 'prod') {return url.indexOf('sss.bd.com.cn') !== -1 ? url.replace(/^(http)[s]*(:\/\/)/, 'https://images.weserv.nl/?url=') : url} else {return url.indexOf('sss-uat.bd.com.cn') !== -1 ? url.replace(/^(http)[s]*(:\/\/)/, 'https://images.weserv.nl/?url=') : url}

解决跨域方法2 前端自己做跨域设置 通过wechat_image做代理访问跨域的图片

vue项目     default.conf  配置 nginx 配置location /wechat_image {#proxy_set_header Host "$arg_host";proxy_set_header Referer "";resolver 114.114.114.114;proxy_pass $arg_url;}
  • 页面中对应图片地址
 getReplaceImg(url) {if(!url) returnif (process.env.NODE_ENV !== 'development') {const baseUrl = `${ process.env.VUE_APP 自己项目的域名  }/wechat_image`const newUrl = `${ baseUrl }?url=${ url 实际图片地址}`return newUrl}// https://sss-uat.bb.com.cn/wechat_image?url=https://s-f-uat.jetour.com.cn/2024-12-26/1735204221531/u=4293302727,535734201.jpg},
  • 前端本地想看效果需要在vue.config 里面配置代理
     proxyTable: {'/wechat_image': {target:'http://localhost:8070',changeOrigin: true,pathRewrite: {'^/api': ''}}

但是遇到个坑

https://s-f-uat.jetour.com.cn/2024-12-26/1735204221531/u=4293302727,535734201&fm=26.jpg图片中有fm 导致解析图片一直有问题  fm会作为参数去请求导致有问题  有方法解决了麻烦告知下
http://www.lryc.cn/news/510076.html

相关文章:

  • 24.12.26 SpringMVCDay01
  • 一分钟快速了解Ecovadis认证等级划分
  • 科技云报到:人工智能时代“三大件”:生成式AI、数据、云服务
  • 【网络云计算】2024第52周-每日【2024/12/26】小测-理论实操-备份MySQL数据库并发送邮件-解析
  • 菜鸟带新鸟——基于EPlan2022的部件库制作(3D)
  • Level DB --- MemTable
  • 【山西长治】《长治市市直部门政务信息化建设项目预算编制规范和预算编制标准》(长财行[2022]25号)-省市费用标准解读系列32
  • 海格通信嵌入式面试题及参考答案
  • 前端学习DAY27(盒子模型内边距)
  • 基于cobra开发的k8s命令行管理工具k8s-manager
  • scala基础学习(数据类型)-数组
  • uniapp 微信小程序 页面部分截图实现
  • C语言从入门到放弃教程
  • 直流无刷电机驱动原理3-驱动板硬件设计
  • 攻防世界web第三题file_include
  • Trivy Operator命令使用说明
  • Lazada商品评论API接口:深度解析与应用实践
  • 2024最新鸿蒙开发面试题合集(二)-HarmonyOS NEXT Release(API 12 Release)
  • macrodroid通过http请求控制手机运行宏
  • 【Unity3D】Jobs、Burst并行计算裁剪Texture3D物体
  • Cesium材质——Material
  • Postman请求报错SSL证书验证问题
  • 终章:DevOps实践总结报告
  • 解锁金融新纪元:内部知识库的深度挖掘与战略价值
  • 【c语言】一维数组与二维数组
  • Milvus×EasyAi:如何用java从零搭建人脸识别应用
  • Dockerfile 实战指南:解锁高效容器化开发
  • 【每日学点鸿蒙知识】混淆配置、主线程处理大量数据、客户端拖拽效果、三方网站加载样式、List警告问题
  • ChatGPT-4助力学术论文提升文章逻辑、优化句式与扩充内容等应用技巧解析。附提示词案例
  • Android TextView 添加图标并实现换行