1 Star 0 Fork 4

叾屾/tool-box

forked from sohucw/tool-box 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
picture.html 4.37 KB
一键复制 编辑 原始数据 按行查看 历史
chenjianwei01 提交于 2022-07-24 10:01 . feat: 生成海报
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>前端生成海报</title>
<style>
* {
margin: 0;
padding: 0;
list-style: none;
}
.view {
width: 375px;
height: 667px;
position: relative;
color: #FFFFFF;
text-align: center;
font-size: 20px;
background: #4044ff;
}
.title {
width: 100%;
font-size: 30px;
position: absolute;
top: 50px;
left: 50%;
transform: translateX(-50%);
}
.content {
width: 100%;
font-size: 16px;
position: absolute;
top: 100px;
left: 50%;
transform: translateX(-50%);
}
.result {
width: 375px;
height: 667px;
}
.result>img {
width: 100%;
height: 100%;
}
.btn {
padding: 10px;
}
button {
padding: 6px 10px;
background: #31f111;
border: none;
}
</style>
<script src="https://cdn.bootcdn.net/ajax/libs/html2canvas/1.4.1/html2canvas.js"></script>
</head>
<body>
<div class="btn">
<button onclick="saveFile()">保存海报</button>
<button onclick="drawImage()">生成图片</button>
</div>
<div id="capture" class="view">
<div class="title">海报标题:大伟聊前端</div>
<div class="content">
<p>海报内容</p>
<p id='dawei'>大伟聊前端</p>
<p>前端训练营</p>
<p>前端训练营</p>
<p>前端训练营</p>
<p>前端训练营</p>
<p>前端训练营</p>
<p>前端训练营</p>
<p>前端训练营</p>
<p>前端训练营</p>
<p>前端训练营</p>
<p>前端训练营</p>
</div>
</div>
<br>
<hr>
<div id="result" class="result"></div>
<script>
//保存图片
function saveFile() {
// devicePixelRatio 返回当前显示设备的物理像素分辨率与CSS 像素分辨率之比。
// 此值也可以解释为像素大小的比率:一个CSS 像素的大小与一个物理像素的大小。
// 简单来说,它告诉浏览器应使用多少屏幕实际像素来绘制单个CSS 像素
// https://developer.mozilla.org/zh-CN/docs/Web/API/Window/devicePixelRatio
let dpi = window.devicePixelRatio || 2
let options = {
useCORS: true, // 使用跨域
ignoreElements: (ele) => {
if(ele.id==='dawei') {
return true
}
},
scale: dpi //设置默认值 提高图片分辨率
};
html2canvas(document.querySelector("#capture"), options).then(canvas => {
// document.body.appendChild(canvas)
canvas.toBlob(function (blob) {
downloadBob(blob);
});
});
}
//生成图片
function drawImage() {
let dpi = window.devicePixelRatio || 2
let options = {
useCORS: true,
ignoreElements: false,
scale: dpi //设置默认值 提高图片分辨率
};
html2canvas(document.querySelector("#capture"), options).then(canvas => {
let url = canvas.toDataURL('image/png') // 将canvas转成base64图片格式
document.querySelector('#result').innerHTML = `<img src="${url}" alt="大伟聊前端" />`
});
}
// 下载不了的 生成图片长按保存
function downloadBob(blob) {
var a = document.createElement('a');
var url = window.URL.createObjectURL(blob);
var filename = '大伟聊前端.png';
a.href = url;
a.download = filename;
a.click();
// 当图片文件加载完成,释放这个url
window.URL.revokeObjectURL(url);
}
</script>
</body>
</html>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/xiaobo1012/tool-box.git
git@gitee.com:xiaobo1012/tool-box.git
xiaobo1012
tool-box
tool-box
master

搜索帮助

D67c1975 1850385 1daf7b77 1850385