diff --git a/apps/jingrow/frontend/src/views/tools/RemoveBackground.vue b/apps/jingrow/frontend/src/views/tools/RemoveBackground.vue index 5370798..13fc598 100644 --- a/apps/jingrow/frontend/src/views/tools/RemoveBackground.vue +++ b/apps/jingrow/frontend/src/views/tools/RemoveBackground.vue @@ -487,17 +487,29 @@ const handleDownload = async () => { if (!resultImage.value) return try { + // 获取图片数据并转换为 Blob,确保跨域图片也能下载 + const response = await fetch(resultImage.value) + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`) + } + + const blob = await response.blob() + const blobUrl = URL.createObjectURL(blob) + + // 创建下载链接 const link = document.createElement('a') - link.href = resultImage.value + link.href = blobUrl link.download = `removed-background-${Date.now()}.png` - link.target = '_blank' link.style.display = 'none' + document.body.appendChild(link) link.click() - setTimeout(() => { + // 清理:移除 DOM 元素并释放 blob URL + requestAnimationFrame(() => { document.body.removeChild(link) - }, 100) + URL.revokeObjectURL(blobUrl) + }) message.success(t('Download started')) } catch (error: any) {