网站首页 > 技术文章 正文
网页dom转换成png,jpeg等,并保存到zip
- 使用html2canvas将html转换成canvas
- 使用canvas2image将canvas转换成图片资源
- 直接保存或则打包到zip
1.html2canvas使用
html2canvas(document.body).then(function(canvas) { document.body.appendChild(canvas); });
简单示例:html2canvas(element, [options]);
options具体参数看这里
2.canvas2image使用
有两种使用方式,第一种直接保存
Canvas2Image.saveAsImage(canvasObj, width, height, type) Canvas2Image.saveAsPNG(canvasObj, width, height) Canvas2Image.saveAsJPEG(canvasObj, width, height) Canvas2Image.saveAsGIF(canvasObj, width, height) Canvas2Image.saveAsBMP(canvasObj, width, height)
第二种生成图片资源
Canvas2Image.convertToImage(canvasObj, width, height, type) Canvas2Image.convertToPNG(canvasObj, width, height) Canvas2Image.convertToJPEG(canvasObj, width, height) Canvas2Image.convertToGIF(canvasObj, width, height) Canvas2Image.convertToBMP(canvasObj, width, height)
3.生成png并保存
html2canvas(document.getElementById(id)) .then(function (canvas) { //Canvas2Image.convertToPNG(canvas); Canvas2Image.saveAsPNG(canvas); });
4.打包到zip
zip使用示例:
var zip = new JSZip(); zip.file("Hello.txt", "Hello World\n"); var img = zip.folder("images"); img.file("smile.gif", imgData, {base64: true}); zip.generateAsync({type:"blob"}) .then(function(content) { // see FileSaver.js saveAs(content, "example.zip"); });
如果生成的是单张图片可以直接保存,如果需要生成多张,这个时候就需要将生成的图片打包下载
var zip = new JSZip(); var img = zip.folder('images'); // 新建一个images目录 $('.show').each(function (index) { var id = $(this).attr('id'); // 这里的element只能是html dom 使用$(this)会报错 // { useCORS: true } 如果需要跨域加载图片 var data = html2canvas(document.getElementById(id), { useCORS: true }) .then(function (canvas) { var image = Canvas2Image.convertToPNG(canvas, 1920, 1080); var image_data = $(image).attr('src'); // 生成的image_data是图片链接,不能直接保存为图片,需要做一下截取 return image_data.split('data:image/png;base64,')[1]; }); img.file(id + '.jpg', data, { base64: true }); }) zip.generateAsync({ type: "blob" }) .then(function (content) { saveAs(content, "example.zip"); });
示例代码点击这里
喜欢请点击关注哦谢谢啦,另外,更多精彩内容敬请关注百战程序员哦!
猜你喜欢
- 2024-09-10 Python奇淫技巧之自动登录哔哩哔哩(解决滑块验证)
- 2024-09-10 前端上传图片被旋转的处理方案(nba常规赛录像高清回放)
- 2024-09-10 Day 3 学习Canvas这一篇文章就够了
- 2024-09-10 JavaScript实现浏览器本地的图像移动、大小调整和裁剪
- 2024-09-10 微信内置浏览器动态生成二维码并长按识别
- 2024-09-10 Python奇淫技巧之自动登录哔哩哔哩
- 2024-09-10 JSPDF + html2canvas A4分页截断(html做分页)
- 2024-09-10 vue手把手教学~搭建web聊天室(vue简单聊天室)
- 2024-09-10 前端:从零实现一款可视化图片编辑器
- 2024-09-10 一键生成图片!教你用Canvas绘制图像并转为图片展示,附详细代码
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 522℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 491℃MySQL service启动脚本浅析(r12笔记第59天)
- 470℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 468℃启用MySQL查询缓存(mysql8.0查询缓存)
- 448℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 428℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 425℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)