当前位置:首页 > 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
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

vue实现图片轮播

vue实现图片轮播

Vue 实现图片轮播的方法 使用第三方库(推荐) 安装 vue-awesome-swiper 库,这是基于 Swiper 的 Vue 封装: npm install swiper vue-awe…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…