<!DOCTYPE html>
<html>
<head>
<title>拼接截屏</title>
<meta charset="UTF-8">
<style>
body {
margin: 0;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #f0f0f0;
font-family: Arial, sans-serif;
}
canvas {
border: 1px solid #ccc;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
max-width: 90vw; /* 限制最大宽度,适应屏幕 */
max-height: 90vh; /* 限制最大高度,适应屏幕 */
}
#loading-text {
font-size: 18px;
color: #555;
}
</style>
</head>
<body>
<div id="loading-text">正在拼接图片,请稍候...</div>
<canvas id="screenshotCanvas" style="display:none;"></canvas>
<script>
document.addEventListener('DOMContentLoaded', async () => {
const canvas = document.getElementById('screenshotCanvas');
const ctx = canvas.getContext('2d');
const loadingText = document.getElementById('loading-text');
try {
// 从 storage.local 获取截图数据
const result = await chrome.storage.local.get(['fullPageScreenshots']);
const screenshots = result.fullPageScreenshots || [];
if (screenshots.length === 0) {
loadingText.textContent = '没有找到截屏数据。';
return;
}
// 获取第一张截图的宽度作为最终图片的宽度
// 假设所有截图宽度相同
const firstImage = new Image();
firstImage.src = screenshots[0].dataUrl;
await new Promise(resolve => firstImage.onload = resolve);
const imageWidth = firstImage.width;
// 计算最终图片的总高度
const totalHeight = screenshots[screenshots.length - 1].yOffset + firstImage.height;
canvas.width = imageWidth;
canvas.height = totalHeight;
canvas.style.display = 'block'; // 显示 canvas
loadingText.style.display = 'none'; // 隐藏加载文本
// 绘制所有截图到 Canvas
for (const screenshot of screenshots) {
const img = new Image();
img.src = screenshot.dataUrl;
await new Promise(resolve => img.onload = resolve);
// 绘制图片到 Canvas 的正确位置
ctx.drawImage(img, 0, screenshot.yOffset);
}
// 清除存储中的截图数据,避免下次打开时重复加载
await chrome.storage.local.remove('fullPageScreenshots');
// 可以选择将 Canvas 内容转换为图片并显示或提供下载
// 例如,直接显示在页面上,用户可以右键保存
// 或者提供一个下载按钮
// const finalDataUrl = canvas.toDataURL('image/png');
// const imgElement = document.createElement('img');
// imgElement.src = finalDataUrl;
// document.body.appendChild(imgElement);
} catch (error) {
console.error("拼接截屏失败:", error);
loadingText.textContent = `拼接截屏失败: ${error.message || '未知错误'}`;
}
});
</script>
</body>
</html>

技术与健康
- 粉丝: 1569
最新资源
- GIS与GPS系统融合电视管理.doc
- C语言数据类型ppt课件(1).ppt
- 2010年度双语教学示范课程建设项目申报表-java.doc
- 互联网金融发展历程研究.docx
- 2023年广西自考部分课程计算机上机考核和物流专业部分课程实践操作考核安排.doc
- EXCEL实用函数.docx
- 程序设计和C语言样本.doc
- GIS在农村地籍调查数据库建设中的应用.docx
- 2022java软件工程师个人简历.docx
- IT系统安全应急预案.doc
- 2022ACCP软件工程师资料.docx
- 信阳市旅游产业信息化发展研究.docx
- IBM-DS5020存储详细参数详述-中文-产品详细说明--足够详细-官网只有.docx
- 汽车之家电子商务案例分析说课材料.ppt
- 大数据在城市治理方面的应用讲义.ppt
- 2022网络软萌甜炸的短句情话.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


