当前位置: 首页 > 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上面,确认图片会出来。

相关文章:

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

前情提要 想在在JavaScript中&#xff0c;酷游专员KW9㍠ㄇEㄒ提供用HTML5的Canvas元素来剪取画面并存成SVG或PNG。 程式写法(一) 首先&#xff0c;需要在HTML中创建一个Canvas元素<canvas id"myCanvas"></canvas> 在JavaScript中&#xff0c;使用canv…...

2018年入学,2021年入职

2018年的春天&#xff0c;凌晨紧张地查着考研成绩&#xff0c;运气好&#xff0c;384&#xff0c;远远超出了我的预期“能进复试就行”&#xff0c;秉承着“尽人事&#xff0c;知天命”的格言&#xff0c;坚持复习完&#xff0c;坚持到考试最后一秒。 在考试之前&#xff0c;我…...

python+nodejs+ssm+vue 基于协同过滤的旅游推荐系统

本文首先介绍了旅游推荐的发展背景与发展现状&#xff0c;然后遵循软件常规开发流程&#xff0c;首先针对系统选取适用的语言和开发平台&#xff0c;根据需求分析制定模块并设计数据库结构&#xff0c;再根据系统总体功能模块的设计绘制系统的功能模块图&#xff0c;流程图以及…...

【STL十四】函数对象(function object)_仿函数(functor)——lambda表达式

【STL十四】函数对象&#xff08;function object&#xff09;_仿函数&#xff08;functor&#xff09;——lambda表达式 一、函数对象&#xff08;function object&#xff09;二、函数对象优点三、分类四、头文件五、用户定义函数对象demo六、std::内建函数对象1、 算术运算函…...

如何写出高质量的前端代码

写出高质量的前端代码是每个前端开发人员的追求。在一个复杂的项目中&#xff0c;代码质量对于项目的可维护性、可扩展性和可读性都有很大的影响。本文将介绍一些如何写出高质量前端代码的技巧和最佳实践。 一、注重代码结构和组织 1.1 遵循一致的命名规范 命名规范是编写高…...

YOLOv7如何提高目标检测的速度和精度,基于优化算法提高目标检测速度

目录 一、学习率调度二、权重衰减和正则化三、梯度累积和分布式训练1、梯度累积2、分布式训练 四、自适应梯度裁剪 大家好&#xff0c;我是哪吒。 上一篇介绍了YOLOv7如何提高目标检测的速度和精度&#xff0c;基于模型结构提高目标检测速度&#xff0c;本篇介绍一下基于优化算…...

CentOS 7中安装配置Nginx的教程指南

1. 安装Nginx 在终端中执行以下命令以安装Nginx&#xff1a; sudo yum install epel-release sudo yum install nginx安装完成后的 Nginx 内容通常会被安装在以下目录下&#xff1a; /etc/nginx: 该目录包含 Nginx 的配置文件&#xff0c;包括 nginx.conf 和 conf.d 目录下的…...

Vicuna- 一个类 ChatGPT开源 模型

Meta 开源 LLaMA(大羊驼)系列模型为起点,研究人员逐渐研发出基于LLaMA的Alpaca(羊驼)、Alpaca-Lora、Luotuo(骆驼)等轻量级类 ChatGPT 模型并开源。 google提出了一个新的模型:Vicuna(小羊驼)。该模型基于LLaMA,参数量13B。Vicuna-13B 通过微调 LLaMA 实现了高性能…...

5.1 数值微分

学习目标&#xff1a; 作为数值分析的基础内容&#xff0c;我建议你可以采取以下步骤来学习数值微分&#xff1a; 掌握微积分基础&#xff1a;数值微分是微积分中的一个分支&#xff0c;需要先掌握微积分基础知识&#xff0c;包括导数、极限、微分等。 学习数值微分的概念和方…...

云计算服务安全评估办法

云计算服务安全评估办法 2019-07-22 14:46 来源&#xff1a; 网信办网站【字体&#xff1a;大 中 小】打印 国家互联网信息办公室 国家发展和改革委员会 工业和信息化部 财政部关于发布《云计算服务安全评估办法》的公告 2019年 第2号 为提高党政机关、关键信息基础设施运营者…...

laravel5.6.* + vue2 创建后台

本地已经安装好了composer 1.新建 Laravel5.6.*项目 composer create-project --prefer-dist laravel/laravel laravel5vue2demo 5.6.* 2. cd laravel5vue2demo 3. npm install /routes/web.php 路由文件中, 修改 Route::get(/, function () {return view(index); });新建…...

Python自动化sql注入:布尔盲注

在sql注入时&#xff0c;使用python脚本可以大大提高注入效率&#xff0c;这里演示一下编写python脚本实现布尔盲注的基本流程&#xff1a; 演示靶场&#xff1a;sqli-labs 布尔盲注 特点&#xff1a;没有回显没有报错&#xff0c;但根据sql语句正常与否返回不同结果&#x…...

Microsoft Defender for Office 365部署方案

目录 前言 一、Microsoft Defender for Office 365 部署架构 1、部署环境 2、Microsoft Defender for Office 365 核心服务...

字节岗位薪酬体系曝光,看完感叹:不服真不行

曾经的互联网是PC的时代&#xff0c;随着智能手机的普及&#xff0c;移动互联网开始飞速崛起。而字节跳动抓住了这波机遇&#xff0c;2015年&#xff0c;字节跳动全面加码短视频&#xff0c;从那以后&#xff0c;抖音成为了字节跳动用户、收入和估值的最大增长引擎。 自从字节…...

华为OD机试-高性能AI处理器-2022Q4 A卷-Py/Java/JS

某公司研发了一款高性能AI处理器。每台物理设备具备8颗AI处理器&#xff0c;编号分别为0、1、2、3、4、5、6、7。 编号0-3的处理器处于同一个链路中&#xff0c;编号4-7的处理器处于另外一个链路中&#xff0c;不同链路中的处理器不能通信。 现给定服务器可用的处理器编号数组…...

Vue - 实现垂直菜单分类栏目,鼠标移入后右侧出现悬浮二级菜单容器效果(完整示例源码,详细代码注释,一键复制开箱即用)

前言 网上的教程都太乱了,各种杂乱无注释代码、图片资源丢失、一堆样式代码,根本无法改造后应用到自己的项目中。 本文实现了 在 Vue / Nuxt 项目中,垂直分类菜单项,当用户鼠标移入菜单后,右侧自动出现二级分类悬浮容器盒子效果, 您可以直接复制源码,然后按照您的需求再…...

NVM-无缝切换Node版本

NVM-无缝切换Node版本 如果未使用nvm之前已经下载了node&#xff0c;并且配置了环境变量,那么此时删除这些配置(Node的环境以及Node软件),使用nvm是为了在某些项目中使用低版本的node NVM下载 进入github的nvm readme&#xff1a; https://github.com/coreybutler/nvm-windows…...

CCF-CSP真题《202303-1 田地丈量》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看&#xff1a;CCF-CSP真题附题解大全 试题编号&#xff1a;202303-1试题名称&#xff1a;田地丈量时间限制&#xff1a;1.0s内存限制&#xff1a;512.0MB问题描述&#xff1a; 问题描述 西西艾弗岛上散落着 n 块田地。每块田地可视为…...

Autosar-软件架构

文章目录 一、Autosar软件架构分层图二、应用层三、RTE层四、BSW层1、微控制器抽象层2、ECU抽象层I/O硬件抽象COM硬件抽象Memory硬件抽象Onboard Device Abstraction3、复杂驱动层4、服务层系统服务通信服务CAN一、Autosar软件架构分层图 架构分层是实现软硬件分离的关键,它也…...

8年测开年薪30W,为什么从开发转型为测试?谈谈这些年的心路历程……

谈谈我的以前&#xff0c;从毕业以来从事过两个多月的Oracle开发后转型为软件测试&#xff0c;到现在已近过去8年成长为一个测试开发工程师&#xff0c;总结一下之间的心路历程&#xff0c;希望能给徘徊在开发和测试之前的同学一点小小参考。 一、测试之路伏笔 上学偷懒&#…...

收藏!小白也能看懂RAG,让大模型拥有外部知识库的翅膀

当大模型遇到"不知道"的问题&#xff0c;RAG 让它拥有了外部知识的翅膀。大型语言模型&#xff08;LLM&#xff09;虽然知识渊博&#xff0c;但存在两个致命短板&#xff1a;知识截止和幻觉问题。模型训练完成后&#xff0c;新发生的事情它一无所知&#xff1b;被问到…...

每日一题 力扣 3418. 机器人可以获得的最大金币数 力扣 215. 数组中的第K个最大元素 动态规划 TopK问题 C++ 题解

文章目录力扣 3418. 机器人可以获得的最大金币数题目描述思路简介代码实现复杂度分析力扣 215. 数组中的第K个最大元素题目描述思路简介代码实现复杂度分析踩坑记录力扣 3418. 机器人可以获得的最大金币数 题目描述 力扣 3418. 机器人可以获得的最大金币数 示例 1&#xff1…...

Phi-4-mini-reasoning实操手册:Web界面响应延迟高?GPU显存占用诊断方法

Phi-4-mini-reasoning实操手册&#xff1a;Web界面响应延迟高&#xff1f;GPU显存占用诊断方法 1. 问题背景与现象分析 当使用Phi-4-mini-reasoning进行推理任务时&#xff0c;Web界面响应延迟高是一个常见问题。这种情况通常表现为&#xff1a; 点击"开始生成"按…...

SEO聚合页与传统网页有什么区别

SEO聚合页的核心理念与传统网页的差异 在互联网的世界里&#xff0c;网页的形式和功能不断演变&#xff0c;其中SEO聚合页与传统网页的区别尤为显著。理解这两者的不同&#xff0c;对于提升网站的流量和用户体验至关重要。 SEO聚合页是一种专注于内容聚合和优化的网页形式&am…...

离散化与差分结合应用例题精讲

一、离散化是什么&#xff1f; 1.为什么用离散化 引入&#xff1a;当题目给我们几个区间涂色&#xff0c;总长为20亿&#xff0c;要求我们统计最后有颜色的区域。 聪明的我们立刻就想建立一个数组&#xff0c;每接收到一个区间就遍历该区间打上标记。最后遍历整个数组统计带…...

突破音频格式壁垒:QMCDecoder开源工具实现无损音频自由转换

突破音频格式壁垒&#xff1a;QMCDecoder开源工具实现无损音频自由转换 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 问题&#xff1a;当音乐被数字锁链束缚——QMC格式的…...

重构文献预览体验:Zotero PDF Preview让学术效率提升70%的无缝解决方案

重构文献预览体验&#xff1a;Zotero PDF Preview让学术效率提升70%的无缝解决方案 【免费下载链接】zotero-pdf-preview Preview Zotero attachments in the library view. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-pdf-preview 一、场景化痛点&#xff1a…...

Intv_ai_mk11在人工智能教育中的应用:个性化学习伙伴

Intv_ai_mk11在人工智能教育中的应用&#xff1a;个性化学习伙伴 1. 教育领域的新助手 最近几年&#xff0c;人工智能在教育领域的应用越来越广泛。作为一款专门为教育场景设计的AI助手&#xff0c;Intv_ai_mk11正在改变传统学习方式。它不仅能解答学生问题&#xff0c;还能根…...

FigmaCN:颠覆式中文界面工具,让设计效率提升50%的革新性方案

FigmaCN&#xff1a;颠覆式中文界面工具&#xff0c;让设计效率提升50%的革新性方案 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 开发者日常工作中是否遇到过这样的困境&#xff1a;…...

CA6140车床杠杆831009钻M6孔夹具设计全套带图

CA6140车床作为机械加工领域的经典设备&#xff0c;其杠杆零件&#xff08;编号831009&#xff09;的加工精度直接影响整机性能。针对该零件M6螺纹孔的加工需求&#xff0c;专用夹具的设计需兼顾定位稳定性、操作便捷性与加工经济性。通过分析零件结构可知&#xff0c;杠杆两端…...