当前位置:首页 > JavaScript

js 实现图片另存为

2026-04-04 08:30:52JavaScript

实现图片另存为的方法

在JavaScript中实现图片另存为功能,可以通过以下方式完成:

使用<a>标签的download属性

创建一个隐藏的<a>标签,设置其href为图片URL,download属性为文件名,触发点击事件。

js 实现图片另存为

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

处理跨域图片(Canvas转换)

若图片跨域,需先通过Canvas绘制并转换为DataURL。

js 实现图片另存为

function saveCrossOriginImage(url, filename) {
  const img = new Image();
  img.crossOrigin = 'Anonymous';
  img.onload = function() {
    const canvas = document.createElement('canvas');
    canvas.width = img.width;
    canvas.height = img.height;
    const ctx = canvas.getContext('2d');
    ctx.drawImage(img, 0, 0);
    const dataURL = canvas.toDataURL('image/png');
    saveImage(dataURL, filename);
  };
  img.src = url + '?t=' + new Date().getTime(); // 避免缓存
}

Blob对象下载(适用于动态生成内容)

通过Fetch API获取图片为Blob对象,再转换为对象URL。

async function saveImageFromBlob(url, filename) {
  const response = await fetch(url);
  const blob = await response.blob();
  const blobUrl = URL.createObjectURL(blob);
  saveImage(blobUrl, filename);
  URL.revokeObjectURL(blobUrl); // 释放内存
}

注意事项

  • 跨域图片需服务器配置Access-Control-Allow-Origin头部
  • Chrome可能阻止非同源下载,建议在用户交互事件(如点击)中触发
  • 移动端部分浏览器可能不支持download属性

完整示例代码

<button onclick="downloadImage()">保存图片</button>
<script>
  function downloadImage() {
    const imageUrl = 'https://example.com/image.jpg';
    saveImage(imageUrl, 'my_image.jpg');
  }

  function saveImage(url, filename) {
    const link = document.createElement('a');
    link.href = url;
    link.download = filename;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
  }
</script>

以上方法覆盖了常见场景下的图片保存需求,可根据实际项目需求选择合适方案。

标签: 另存为图片
分享给朋友:

相关文章

css3怎么制作图片

css3怎么制作图片

使用 CSS3 制作图片效果 CSS3 提供了多种方法来处理和美化图片,以下是几种常见的实现方式: 圆角效果 通过 border-radius 属性可以轻松为图片添加圆角: img { bor…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

vue实现无缝图片

vue实现无缝图片

实现无缝图片轮播的方法 在Vue中实现无缝图片轮播,可以通过以下步骤完成。这种方法利用Vue的响应式特性和CSS动画,确保图片切换平滑且无缝。 使用vue-awesome-swiper库 安装vue…

Vue实现图片 放大

Vue实现图片 放大

Vue实现图片放大功能 使用v-viewer插件 安装v-viewer插件: npm install v-viewer 在main.js中引入并配置: import Viewer from 'v-…

vue实现图片缩放

vue实现图片缩放

实现图片缩放的基本方法 在Vue中实现图片缩放可以通过CSS的transform: scale()属性或动态调整图片的width和height属性。以下是一个基础的实现示例: <templat…

vue实现图片拖动

vue实现图片拖动

Vue 实现图片拖动的步骤 使用 HTML5 拖放 API 在 Vue 中实现图片拖动可以利用 HTML5 的拖放 API。通过 draggable 属性设置元素可拖动,监听 dragstart、dr…