HTML转图片

news/2024/11/17 18:12:01/

博主在最近的工作中遇到了这么一个问题:将 HTML 页面中渲染的内容保存为图片文件或 base64 字节流。于是博主便开始如下探索:

  • 首先博主从同事那里打听到了一个 js 库 html2canvas.min.js ,该库可将 HTML 转 Canvas 同时可用以获取 canvas 内容的字节流。
  • 上述 js 库的发现,使获取字节流的需求得到了解决,但是将内容保存为图片的需求还没解决。于是博主又在浏览器上进行了一顿猛如虎的查询,找了另外一个 js 库 canvas2image.js,这个库的发现,成功解决了博主另一个需求。

博主与需求的故事到此结束,下面就是激动人心的时刻:上代码!!!

demo.html

<!DOCTYPE html>
<html><head><title></title><meta charset="UTF-8"><script type="text/javascript" src="html2canvas.min.js"></script><script type="text/javascript" src="canvas2image.js"></script><style type="text/css">/*将图片在窗体可见区外进行渲染*/.canvasDemo {width: 1920px;height: 1080px;background: url("S1.jpg");background-size: 1920px 1080px;position: absolute;top: -30000px;left: -30000px;}.marker {width: 30px;height: 30px;background-color: blue;position: absolute;top: 50px;left: 50px;}#cvs{position: absolute;top: -30000px;left: -30000px;}</style>
</head><body style="overflow: hidden;"><!-- HTML 容器 --><div class="canvasDemo" id="screenImg"><!-- 在容器中做个小标记,以示改插件可用于带图片背景和HTML标签样式的HTML到canvas的转换 --><div class="marker"></div></div><!-- 定义一个canvas容器 --><canvas width="1920" height="1080" id="cvs"></canvas><script type="text/javascript">// 将 canvas 转为 base64 字节码html2canvas(document.getElementById("screenImg")).then(function(canvas) {// 将渲染出来的图片显示在页面中document.body.appendChild(canvas);// 打印 canvas 内容的 base64 字节流console.log(canvas.toDataURL());});// 将转换完成的 HTML 渲染至指定 canvas 标签中并将其保存 canvas 为图片var canvasDom = document.getElementById('cvs');html2canvas(document.getElementById("screenImg"),{canvas:canvasDom}).then(function(canvas) {Canvas2Image.saveAsImage(canvasDom, "1920", "1080", "png");});</script>
</body></html>  

效果图

效果图

示例代码粘贴完事,收工!下~ ~ ~ 班 ~ ~ ~ 是不可能下班的!工作使我快乐,我也要996,也要ICU

PS:

  1. 上述样例需在 web 服务器中进行发布测试,否则会因跨域问题导致失败。
  2. 浏览器下载下来的图片文件是没有文件格式后缀的
  3. canvas2image Github地址:https://github.com/hongru/canvas2image
  4. html2canvas Github地址:https://github.com/niklasvh/html2canvas/
  5. html2canvas 官网:http://html2canvas.hertzen.com/
  6. 代码下载:https://download.csdn.net/download/supreme_sir/11149920

http://www.ppmy.cn/news/694657.html

相关文章

C/C++结构体内存对齐的一些思考

在C中&#xff0c;结构体的内存对齐是为了提高访问结构体成员变量的效率和保证硬件的要求。 结构体对齐 C/C C 结构体内存对齐的示例代码C/C结构体内存对齐的原则结合汇编代码分析结构体的内存对齐问题 C 结构体内存对齐的示例代码 #include <iostream>struct Test_Stru…

Jackson图

Jackson图 虽然程序中实际使用的数据结构种类繁多&#xff0c;但是他们的数据元素彼此之间的逻辑关系却只有顺序、选择和重复3类&#xff0c;因此&#xff0c;逻辑数据结构也只有这3类。 1.顺序结构 顺序结构的数据由一个或多个数据元素组成&#xff0c;每个元素按确定次序出…

仿美图秀秀的图片剪切

先贴上美图秀秀原作的效果图&#xff0c;右边是我仿的效果图。 刚一眼打量过去&#xff0c;吸引我们的就是那四个大点。就从它开始吧&#xff0c;目前看来这个大点是一个图片&#xff0c;当点击下去的时候有加亮的效果&#xff0c;可能这又是一张图片。我们先不要考虑这些&…

superset

应用场景 数据进入到数据库中,查询只能看到一行行的数据,最好是可以通过图形的方式将数据形象化的展示出来,通过图形进行组合分析,仪表分析,地图分析,多维分析等等,更加详细的通过图形展示数据,展示规律,展示分析! 操作步骤 # yum install gcc libffi-devel python-d…

Supreme Number

//特别坑 371&#xff0c; 713&#xff0c; 731 都不是素数 /*#include <iostream> #include <math.h> using namespace std; int a[] {1, 2, 3, 5, 7,11, 13, 17, 23, 31, 37, 53, 71, 73, 113, 131, 137, 173, 311, 317, 371, 713, 731}; int isPrime(lon…

SuperSlide图片切换

SuperSlide图片切换 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. /*SuperSlide图片切换*/jQuery(".focusBox").slide({mainCell: ".pic",effect: "fold",a…

在线生成supreme风格图片

原文链接&#xff1a; https://justforuse.github.io/blog/zh-cn/2018/12/supreme-image/ 最近被本山大叔鬼畜洗脑了?&#xff1a;https://www.bilibili.com/video/av19390801?fromsearch&seid2488280777914879673 supreme风格图片也是土潮土潮的&#xff0c;所以就来做…

P4824 [USACO15FEB] Censoring S

请读者在阅读前充分理解KMP与其失配函数的意义。 题目描述 原题来自&#xff1a;USACO 2015 Feb. Silver 给出两个字符串 S 和 T&#xff0c;每次从前往后找到 S 的一个子串 AT 并将其删除&#xff0c;空缺位依次向前补齐&#xff0c;重复上述操作多次&#xff0c;直到 S 串…