当前位置:首页 > 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 需要用户直接触发下载事件,不能通过异步回调执行。

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

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

相关文章

vue实现图片取色

vue实现图片取色

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

vue实现图片闪烁

vue实现图片闪烁

实现图片闪烁效果的方法 在Vue中实现图片闪烁效果可以通过CSS动画或JavaScript动态控制样式。以下是几种常见方法: CSS动画实现 通过@keyframes定义闪烁动画,并应用到图片元素上…

js实现图片加载

js实现图片加载

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

js实现图片移动

js实现图片移动

使用CSS和JavaScript实现图片移动 方法一:使用CSS动画结合JavaScript控制 通过CSS定义动画关键帧,JavaScript动态添加或移除动画类。 /* CSS部分 */ .m…

vue实现图片压缩

vue实现图片压缩

使用 canvas 实现图片压缩 在 Vue 项目中可以通过 canvas 的 drawImage 和 toDataURL 方法实现图片压缩。创建一个方法处理图片文件,将其绘制到 canvas 并输出…

vue实现图片缩放

vue实现图片缩放

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