当前位置:首页 > JavaScript

js 实现图片保存

2026-01-30 14:07:28JavaScript

使用Canvas实现图片保存

通过Canvas可以将图片绘制并保存为文件。需要先将图片加载到Canvas,再转换为Blob或Data URL。

const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const img = new Image();

img.onload = function() {
  canvas.width = img.width;
  canvas.height = img.height;
  ctx.drawImage(img, 0, 0);

  canvas.toBlob(function(blob) {
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'image.png';
    a.click();
  }, 'image/png');
};

img.src = 'image.jpg';

使用a标签下载图片

对于服务器上的图片文件,可以直接通过a标签的download属性触发下载。

js 实现图片保存

function downloadImage(url, filename) {
  const a = document.createElement('a');
  a.href = url;
  a.download = filename || 'downloaded-image.jpg';
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
}

处理跨域图片

当图片资源存在跨域限制时,需要确保服务器设置正确的CORS头,或通过代理服务器获取图片。

js 实现图片保存

fetch('https://example.com/image.jpg', {
  mode: 'cors',
  headers: {
    'Origin': window.location.origin
  }
})
.then(response => response.blob())
.then(blob => {
  const url = URL.createObjectURL(blob);
  downloadImage(url, 'image.jpg');
});

保存网页截图

使用html2canvas库可以捕获网页区域并保存为图片。

import html2canvas from 'html2canvas';

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

批量下载多张图片

通过Promise.all实现多张图片的并行下载。

function downloadMultipleImages(urls) {
  urls.forEach((url, index) => {
    const link = document.createElement('a');
    link.href = url;
    link.download = `image-${index}.jpg`;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
  });
}

注意事项

  • 浏览器安全策略可能限制跨域资源下载
  • 大文件下载需要考虑内存管理和进度提示
  • 移动端浏览器可能有不同的下载行为
  • 某些浏览器可能阻止多文件自动下载

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

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

vue实现图片编辑

vue实现图片编辑

Vue实现图片编辑的方法 使用第三方库vue-cropper 安装vue-cropper库: npm install vue-cropperjs 在Vue组件中使用: <template&g…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…