当前位置:首页 > 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 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 j…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: cons…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func…