当前位置:首页 > JavaScript

js实现截图 保存

2026-02-03 03:53:52JavaScript

使用HTML2Canvas库实现截图

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

安装HTML2Canvas库:

npm install html2canvas

基本实现代码:

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服务:

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适配问题

高级功能实现

实现带有水印的截图:

js实现截图  保存

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如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现代码雨

js实现代码雨

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

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let curr…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…