利用canvas把文本和图片结合到一起展示成一张图片在页面展示出来

canvas 使用方法见mdn

canvas使用方法

主要思路

   ## 在html中创建<img> 和 <canvas> 两个标签,<img>初使状态为display:none; <canvas>始终为display:none;紧接着用js去画图,把原始图片和文本结合起来,会返回一个bease64格式的超链接,把超链接地址直接复值给img标签,复制完毕之后设置img标签为display:true 在页面中展示出来。

html部分

  <img :src="img"  v-show=”isshow“/>
        <canvas
          class="extrapolation"
          width="1428"
          height="1872"
          ref="extrapolation"
          id="extrapolation"
          v-show="show"
        />

js部分

import {  ref, onMounted } from "vue";
setup() {
    onMounted(async () => {
          await canvasCode();
         const codes = ref("");
         const isshow = ref(false)
    });
    
   const img = ref();
    const canvasCode = () => {
      const myCanvas = document.querySelector("#extrapolation");
      const myContext = myCanvas.getContext("2d");
      const myImage = new Image();
      myImage.src = require("../../../assets/images/teacher/home/Extrapolation.png");
      myImage.onload = function () {
        //图片加载完毕执行
        myContext.drawImage(myImage, 0, 0, myCanvas.width, myCanvas.height);
        myContext.font = "114px 宋体";
        myContext.lineWidth = 9;
        myContext.strokeStyle = "#164970";
        myContext.strokeText(codes.value, 530, 452);
        //把图片地址赋值给img
        img.value =  myCanvas.toDataURL();
        //图片赋值完毕之后让img标签展现出来
        isshow.value = true;
      };
    };
    return {
      img,
      codes,
    };
  },
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
在UniApp中,你可以使用`<canvas>`标签来将多张图片拼接一张图片,然后将其显示在`<image>`标签上。以下是一个简单的示例代码: 1. 首先,在你的页面中添加`<canvas>`和`<image>`标签: ```html <template> <view> <canvas id="myCanvas" style="display: none;"></canvas> <image :src="mergedImage" mode="aspectFit"></image> </view> </template> ``` 2. 在页面的`<script>`标签中,定义相关的数据和方法: ```javascript <script> export default { data() { return { mergedImage: '' // 用于显示拼接后的图片 } }, methods: { mergeImages() { const ctx = uni.createCanvasContext('myCanvas') // 加载图片 const image1 = uni.createImage() image1.src = 'path/to/image1.jpg' const image2 = uni.createImage() image2.src = 'path/to/image2.jpg' // 等待图片加载完 Promise.all([this.loadImage(image1), this.loadImage(image2)]) .then(() => { // 绘制图片canvas上 ctx.drawImage(image1, 0, 0, 100, 100) // 假设图片大小为100x100 ctx.drawImage(image2, 100, 0, 100, 100) // 导出图片数据 ctx.toTempFilePath({ success: (res) => { this.mergedImage = res.tempFilePath // 将拼接后的图片路径赋值给mergedImage,用于显示在<image>标签上 } }) }) }, loadImage(image) { return new Promise((resolve, reject) => { image.onload = () => resolve() image.onerror = (e) => reject(e) }) } }, mounted() { this.mergeImages() } } </script> ``` 在上面的示例中,我们使用`uni.createCanvasContext`创建一个画布上下文,并调用`drawImage`方法将图片绘制到画布上。最后,我们使用`toTempFilePath`方法导出拼接后的图片,并将其路径赋值给`mergedImage`变量,以便在`<image>`标签中显示。 请注意替换示例代码中的图片路径为你自己的图片路径。另外,这只是一个简单的示例,你可以根据实际需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值