当前位置:首页 > JavaScript

js实现截图 保存

2026-02-03 03:53:52JavaScript

使用HTML2Canvas库实现截图

HTML2Canvas是一个流行的JavaScript库,可以将网页元素或整个页面转换为Canvas图像,便于保存或分享。

安装HTML2Canvas库:

npm install html2canvas

基本实现代码:

js实现截图  保存

import html2canvas from 'html2canvas';

const element = document.getElementById('target-element');
html2canvas(element).then(canvas => {
  const imgData = canvas.toDataURL('image/png');
  const link = document.createElement('a');
  link.download = 'screenshot.png';
  link.href = imgData;
  link.click();
});

使用Canvas API直接截图

对于简单的截图需求,可以直接使用Canvas API实现:

const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
const video = document.querySelector('video'); // 或任意元素

canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
context.drawImage(video, 0, 0, canvas.width, canvas.height);

const imgData = canvas.toDataURL('image/jpeg');
const link = document.createElement('a');
link.download = 'screenshot.jpg';
link.href = imgData;
link.click();

使用第三方服务截图

对于需要截图远程网页的情况,可以考虑使用第三方API服务:

js实现截图  保存

const apiKey = 'YOUR_API_KEY';
const url = 'https://api.screenshotapi.com/capture';
const params = {
  url: 'https://example.com',
  viewport: '1280x720',
  full_page: true
};

fetch(`${url}?${new URLSearchParams(params)}`, {
  headers: { 'Authorization': `Bearer ${apiKey}` }
})
.then(response => response.blob())
.then(blob => {
  const link = document.createElement('a');
  link.download = 'website_screenshot.png';
  link.href = URL.createObjectURL(blob);
  link.click();
});

浏览器扩展截图方案

开发浏览器扩展时,可以使用chrome.tabs.captureVisibleTab API:

chrome.tabs.captureVisibleTab(null, {format: 'png'}, function(dataUrl) {
  chrome.downloads.download({
    url: dataUrl,
    filename: 'screenshot.png'
  });
});

注意事项

  • 跨域资源可能导致截图失败,需要配置CORS策略
  • 截图大尺寸页面可能消耗较多内存
  • 某些CSS属性可能无法正确渲染到Canvas中
  • 移动端设备需要考虑视口和DPI适配问题

高级功能实现

实现带有水印的截图:

html2canvas(element).then(canvas => {
  const ctx = canvas.getContext('2d');
  ctx.font = '20px Arial';
  ctx.fillStyle = 'rgba(255,255,255,0.5)';
  ctx.fillText('Watermark', 20, 30);

  const imgData = canvas.toDataURL('image/png');
  const link = document.createElement('a');
  link.download = 'screenshot_with_watermark.png';
  link.href = imgData;
  link.click();
});

标签: 截图js
分享给朋友:

相关文章

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…