当前位置:首页 > JavaScript

js 实现图片另存为

2026-04-04 08:30:52JavaScript

实现图片另存为的方法

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

使用<a>标签的download属性

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

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。

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。

js 实现图片另存为

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>

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

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

相关文章

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

vue 实现图片切换

vue 实现图片切换

实现图片切换的基本思路 在Vue中实现图片切换通常涉及数据绑定、事件处理和动态样式。核心是通过维护一个当前图片索引的状态,利用Vue的响应式特性更新显示的图片。 数据准备与绑定 定义一个数组存储图片…

vue 实现图片预览

vue 实现图片预览

实现图片预览的基本思路 在Vue中实现图片预览功能,通常需要结合HTML5的File API和URL.createObjectURL方法。用户选择图片文件后,通过JavaScript读取文件内容并生成…

vue实现图片拖

vue实现图片拖

Vue实现图片拖拽功能 使用HTML5拖放API 在Vue中实现图片拖拽功能可以通过HTML5的拖放API来实现。创建一个可拖拽的图片元素,设置draggable属性为true,并绑定相关事件。 &…

vue实现图片自动

vue实现图片自动

Vue 实现图片自动轮播 使用 Vue 实现图片自动轮播可以通过以下方法完成,结合 v-for 和定时器实现动态切换。 依赖安装 确保项目已安装 Vue,若未安装可通过以下命令安装: np…

vue实现图片定位

vue实现图片定位

Vue 实现图片定位的方法 使用 CSS 定位 通过 CSS 的 position 属性可以实现图片的绝对或相对定位。在 Vue 模板中直接绑定样式或类名。 <template>…