【前端动手玩创意】前端canvas截图的招式!竟然有三招,可存成SVG或PNG (7)

目录

【前端动手玩创意】等待的转圈圈效果 (1)
【前端动手玩创意】google五星评分的星星(2)
【前端动手玩创意】CSS-3D卡片翻转效果(3) (今天难度颇高,想挑战再进来!)
【前端动手玩创意】一句CSS做出好看的hero section!(4)
【前端动手玩创意】创造一个Skill bar(5)
【前端动手玩创意】遮蔽广告(D卡未登入)脚本、自定义新增名单(6)
【前端动手玩创意】前端canvas截图的招式!竟然有三招,可存成SVG或PNG (7)
【前端动手玩创意】让你的PDF档案更难被抓取(8)
【前端动手玩创意】哇操!你敢信?花式写todo-list,body里面一行都没有也能搞?(9)
【前端动手玩创意】卡片製作,才不是!是卡片製作器!(10)

前情提要

想在在JavaScript中,用HTML5的Canvas元素来剪取画面并存成SVG或PNG。

程式写法(一)

首先,需要在HTML中创建一个Canvas元素
<canvas id="myCanvas"></canvas>

在JavaScript中,使用canvas.getContext('2d')方法来获取2D绘图环境

var canvas = document.getElementById('myCanvas');var ctx = canvas.getContext('2d');

使用ctx.drawImage()方法将要剪取的图片绘製到Canvas上

var imageObj = new Image();imageObj.onload = function() {  ctx.drawImage(imageObj, 0, 0);};imageObj.src = 'example.png';

使用canvas.toDataURL()方法将Canvas转换成SVG或PNG格式的图片

// 转换为SVGvar svgData = canvas.toDataURL('image/svg+xml');// 转换为PNGvar pngData = canvas.toDataURL('image/png');

最后,可以将转换后的图片下载或显示出来

// 下载SVGvar link = document.createElement('a');link.download = 'image.svg';link.href = svgData;link.click();// 显示PNGvar pngImg = new Image();pngImg.src = pngData;document.body.appendChild(pngImg);

程式写法(二)

使用html2canvas

这边介绍一个用CDN的小诀窍,官网没有写:

<script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>

接下来把要抓取的元素找到,加上id为capture就可以使用JS:

html2canvas(document.querySelector("#capture")).then(canvas => {    document.body.appendChild(canvas)});

程式写法(三)

使用DOM to IMG

<script src="https://unpkg.com/dom-to-image@2.6.0/dist/dom-to-image.min.js"></script>
function captureScreenshot(element) {  return new Promise((resolve, reject) => {    domtoimage.toPng(element)      .then((dataUrl) => {        resolve(dataUrl);      })      .catch((error) => {        reject(error);      });  });}//放到页面上确认有这个画面captureScreenshot(document.getElementById('dick')).then((value) => {$('<img>').attr('src',value).appendTo($('body'));}).catch((error) => {  console.error(error);});

这样会转成base64然后我用appendTo把他丢到body上面,确认图片会出来。

心得

以上三招都是实用又简单的方法哦!(,,・ω・,,)
是不是没有料到有三招呢,
写前端不怕你没招,只怕你看了招数之后还不赶紧去尝试搞看看!
喜欢这系列记得追蹤、收藏唷!

未来会有更多有趣的API以及小项目的介绍呢!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章