当前位置:首页 > JavaScript

js 实现图片另存

2026-04-04 03:03:49JavaScript

使用 Canvas 实现图片另存

通过 Canvas 绘制图片并转换为可下载的格式:

function saveImageFromCanvas(canvas, filename) {
  const link = document.createElement('a');
  link.download = filename || 'image.png';
  link.href = canvas.toDataURL('image/png');
  link.click();
}

使用 Blob 对象保存图片

适用于从 URL 获取图片资源后保存:

js 实现图片另存

async function saveImageFromUrl(url, filename) {
  const response = await fetch(url);
  const blob = await response.blob();
  const blobUrl = URL.createObjectURL(blob);

  const link = document.createElement('a');
  link.href = blobUrl;
  link.download = filename || url.split('/').pop();
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
  URL.revokeObjectURL(blobUrl);
}

保存 SVG 格式图片

处理 SVG 图形的保存方案:

function saveSvg(svgElement, filename) {
  const serializer = new XMLSerializer();
  const svgStr = serializer.serializeToString(svgElement);

  const blob = new Blob([svgStr], {type: 'image/svg+xml'});
  const url = URL.createObjectURL(blob);

  const link = document.createElement('a');
  link.href = url;
  link.download = filename || 'image.svg';
  link.click();
  URL.revokeObjectURL(url);
}

处理跨域图片限制

解决跨域资源保存时的权限问题:

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);

    saveImageFromCanvas(canvas, filename);
  };

  img.src = url + (url.includes('?') ? '&' : '?') + 't=' + Date.now();
}

注意事项

浏览器安全策略可能限制某些保存操作,特别是跨域资源。

iOS Safari 需要用户直接触发下载事件,不能通过异步回调执行。

大文件下载可能需要显示加载状态,避免用户误认为操作失败。

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

相关文章

jquery 图片

jquery 图片

jQuery 图片操作 jQuery 提供了多种方法来操作图片,包括加载、显示、隐藏、调整尺寸等。以下是一些常见的图片操作方法: 动态加载图片 使用 attr() 方法可以动态修改图片的 src 属…

vue实现图片单选

vue实现图片单选

Vue 实现图片单选功能 在 Vue 中实现图片单选功能可以通过多种方式完成,以下是两种常见的实现方法: 方法一:使用 v-model 和单选按钮 通过将单选按钮与图片绑定,利用 v-mod…

vue实现图片取色

vue实现图片取色

Vue 实现图片取色功能 在 Vue 中实现图片取色功能,可以通过 Canvas API 获取图片像素数据,并提取颜色信息。以下是具体实现方法: 使用 Canvas 获取图片颜色数据 创建 Canv…

vue实现图片编辑

vue实现图片编辑

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

js实现图片加载

js实现图片加载

使用Image对象加载图片 通过JavaScript的Image对象可以动态加载图片,适用于需要预加载或动态插入图片的场景。 const img = new Image(); img.src =…

js 实现图片轮播

js 实现图片轮播

基础实现方案 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS负责样式布局,JavaScript处理轮播逻辑。 <div class="…