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

前端canvas截图酷游地址的方法!

前情提要

 

想在在JavaScript中,酷游专员KW9㍠ㄇEㄒ提供用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格式的图片

// 转换为SVG
var svgData = canvas.toDataURL('image/svg+xml');
// 转换为PNG
var pngData = canvas.toDataURL('image/png');

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

// 转换为SVG
var svgData = canvas.toDataURL('image/svg+xml');
// 转换为PNG
var pngData = canvas.toDataURL('image/png');

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

// 下载SVG
var link = document.createElement('a');
link.download = 'image.svg';
link.href = svgData;
link.click();// 显示PNG
var 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上面,确认图片会出来。

http://www.lryc.cn/news/62011.html

相关文章:

  • 2018年入学,2021年入职
  • python+nodejs+ssm+vue 基于协同过滤的旅游推荐系统
  • 【STL十四】函数对象(function object)_仿函数(functor)——lambda表达式
  • 如何写出高质量的前端代码
  • YOLOv7如何提高目标检测的速度和精度,基于优化算法提高目标检测速度
  • CentOS 7中安装配置Nginx的教程指南
  • Vicuna- 一个类 ChatGPT开源 模型
  • 5.1 数值微分
  • 云计算服务安全评估办法
  • laravel5.6.* + vue2 创建后台
  • Python自动化sql注入:布尔盲注
  • Microsoft Defender for Office 365部署方案
  • 字节岗位薪酬体系曝光,看完感叹:不服真不行
  • 华为OD机试-高性能AI处理器-2022Q4 A卷-Py/Java/JS
  • Vue - 实现垂直菜单分类栏目,鼠标移入后右侧出现悬浮二级菜单容器效果(完整示例源码,详细代码注释,一键复制开箱即用)
  • NVM-无缝切换Node版本
  • CCF-CSP真题《202303-1 田地丈量》思路+python,c++满分题解
  • Autosar-软件架构
  • 8年测开年薪30W,为什么从开发转型为测试?谈谈这些年的心路历程……
  • 滑动奇异频谱分析:数据驱动的非平稳信号分解工具(Matlab代码实现)
  • updateByPrimaryKey和updateByPrimaryKeySelective的区别
  • 【ARM Coresight 4 - Rom Table 介紹】
  • 11111111
  • JavaWeb——TCP协议的相关特性
  • 数据结构(C语言实现)——二叉树的概念及二叉树顺序结构和链式结构的实现(堆排序+TOP-K问题+链式二叉树相关操作)
  • OpenShift:关于OpenShift(OKD)通过命令行的方式部署镜像以及S2I流程Demo
  • 楔形文字的破解(钉子形文字)【文字破译原理:信息的相关性】
  • 【网络安全】文件上传绕过思路
  • MySQL数据库(2)
  • 2023年学什么编程语言,最容易找工作?