Canvas - 海报绘制

以下例子是在H5端显示,web端亦同.

html结构 :

<template>
  <div class="canvasWrap">
        /* 将其位置移出屏幕有效显示处,能够让img标签特殊操作. */ 
    <canvas style="position: absolute;top:-1000px;" id="cjdCanvas"></canvas>
    <img :src="img_src" class="img" />
  </div>
</template>

css样式 :

<style>
html,body {
  background-color: #ccc;
}
.canvasWrap {
  width: 100%;
  height: 100%;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}
.canvasWrap .img {
  width: 7.5rem;
  height: 13.34rem;
}
</style>

具体的canvas文档点击这里查看.

 //我在这里就定义了一个绘制的函数.

systemInfo() {
  const rem = this.getViewportSize().width / 375 / 2; //获取手机屏幕大小 / 375的比值
  this.rem = rem;
},

startDraw() {
  const c = document.getElementById("cjdCanvas"), //找到该画板的 id
    ctx = c.getContext("2d"),
    rem = this.rem; //这个是因需要不同屏幕的适配,定义方法在上方
    
    //绘制开始
    c.width = 750 * rem;
    c.height = 1334 * rem;
    // console.log(logo_img)
    ctx.drawImage(this.bg_img, 0 * rem, 0 * rem, 750 * rem, 1334 * rem);
    ctx.font = 48 * rem + "px Arial";
    ctx.fillStyle = "#FFFFFF";
    ctx.fillText(card.name + "的成绩单", 38 * rem, 140 * rem);
    ...
    ctx.drawImage(this.logo_img, 505 * rem, 26 * rem, 190 * rem, 50 * rem);
    ...
    ctx.textAlign = "center";
    ctx.font = 40 * rem + "px Arial";
    ctx.fillStyle = "#fecd03";
    ...
    ctx.fillText(card.diff_des, 146 * rem, 861 * rem);
    //保存绘制 
    ctx.save();

    this.$nextTick(e => { //作用将回调延迟到下次 DOM 更新循环之后执行
       this.img_src = c.toDataURL("image/jpeg", 1); //这就导出为 base64 格式.
    });
}

*注意: 遇到drawImage画板当中绘制图片的时候,最好先新建一个image对象赋值,避免发生图片不显示等错误.

download(){
    this.box_img = new Image();
    this.box_img.setAttribute("crossOrigin", "anonymous");
    this.box_img.src = "xxx";
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,748评论 1 45
  • 第一章 HTML5 (2014年10月29日发布)新特性: 10个 (1)新的语义标签 (2)增强型表单 (3)视...
    fastwe阅读 975评论 0 1
  • 一、canvas简介 1.1 什么是canvas?(了解) 是HTML5提供的一种新标签 Canvas是一个矩形区...
    J_L_L阅读 1,560评论 0 4
  • H5 meta详解 viewport width:控制 viewport 的大小,可以指定的一个值,如果 600,...
    FConfidence阅读 842评论 0 3
  • 在现代生活中,哲学家差不多是世界上最受人尊崇,同时也最不受人注意的家伙,如果这么一个家伙真的存在着的话。“哲学家”...
    简书茶馆叶老板阅读 2,433评论 5 27