diff --git a/components/image-annotator.tsx b/components/image-annotator.tsx index 9c6eb56f3..dff5c92df 100644 --- a/components/image-annotator.tsx +++ b/components/image-annotator.tsx @@ -464,11 +464,17 @@ export function ImageAnnotator({ imageUrl, onConfirm, onCancel, initialResizeMod if (result.success && result.image_base64) { // 保存处理后的图片URL和Base64(优先使用original_url,确保下载的是原图) + console.log("[抠图] API返回结果:", { + hasOriginalUrl: !!result.original_url, + hasThumbnailUrl: !!result.thumbnail_url, + originalUrl: result.original_url?.substring(0, 100), + thumbnailUrl: result.thumbnail_url?.substring(0, 100) + }); if (result.original_url) { - console.log("[抠图] 原图URL:", result.original_url); + console.log("[抠图] ✅ 使用原图URL:", result.original_url); setProcessedImageUrl(result.original_url); } else if (result.thumbnail_url) { - console.warn("[抠图] ⚠️ 未找到original_url,使用thumbnail_url作为备选"); + console.warn("[抠图] ⚠️ 未找到original_url,使用thumbnail_url作为备选:", result.thumbnail_url); setProcessedImageUrl(result.thumbnail_url); } else { console.warn("[抠图] ⚠️ 未找到图片URL"); @@ -479,7 +485,7 @@ export function ImageAnnotator({ imageUrl, onConfirm, onCancel, initialResizeMod toast.success(`抠图完成!图片已保存到相册。处理时间: ${result.processing_time?.toFixed(2) || "未知"}秒`); } else { - throw new Error(result.error || "抠图处理失败"); + throw new Error(result.error || result.detail || "抠图处理失败"); } } catch (error) { console.error("[抠图] 错误:", error); @@ -523,11 +529,17 @@ export function ImageAnnotator({ imageUrl, onConfirm, onCancel, initialResizeMod if (result.success && result.image_base64) { // 保存处理后的图片URL和Base64(优先使用original_url,确保下载的是原图) + console.log("[变清晰] API返回结果:", { + hasOriginalUrl: !!result.original_url, + hasThumbnailUrl: !!result.thumbnail_url, + originalUrl: result.original_url?.substring(0, 100), + thumbnailUrl: result.thumbnail_url?.substring(0, 100) + }); if (result.original_url) { - console.log("[变清晰] 原图URL:", result.original_url); + console.log("[变清晰] ✅ 使用原图URL:", result.original_url); setProcessedImageUrl(result.original_url); } else if (result.thumbnail_url) { - console.warn("[变清晰] ⚠️ 未找到original_url,使用thumbnail_url作为备选"); + console.warn("[变清晰] ⚠️ 未找到original_url,使用thumbnail_url作为备选:", result.thumbnail_url); setProcessedImageUrl(result.thumbnail_url); } else { console.warn("[变清晰] ⚠️ 未找到图片URL"); @@ -538,7 +550,7 @@ export function ImageAnnotator({ imageUrl, onConfirm, onCancel, initialResizeMod toast.success(`变清晰完成!图片已保存到相册。处理时间: ${result.processing_time?.toFixed(2) || "未知"}秒`); } else { - throw new Error(result.error || "变清晰处理失败"); + throw new Error(result.error || result.detail || "变清晰处理失败"); } } catch (error) { console.error("[变清晰] 错误:", error); @@ -824,7 +836,7 @@ export function ImageAnnotator({ imageUrl, onConfirm, onCancel, initialResizeMod const result = await response.json(); - if (result.success && result.base64) { + if (result.success) { // 保存处理后的图片URL和Base64(优先使用original_url,确保下载的是原图) if (result.original_url) { console.log("[图像拓展] 原图URL:", result.original_url); @@ -836,12 +848,15 @@ export function ImageAnnotator({ imageUrl, onConfirm, onCancel, initialResizeMod console.warn("[图像拓展] ⚠️ 未找到图片URL"); setProcessedImageUrl(null); } - setProcessedImageBase64(result.base64); + // 优先使用返回的base64,如果没有则使用thumbnail_url或original_url + if (result.base64) { + setProcessedImageBase64(result.base64); + } setProcessType("extend"); toast.success(`图像拓展完成!图片已保存到相册。处理时间: ${result.processing_time?.toFixed(2) || "未知"}秒`); } else { - throw new Error(result.error || "图像拓展处理失败"); + throw new Error(result.error || result.detail || "图像拓展处理失败"); } } catch (error) { console.error("[图像拓展] 错误:", error); @@ -910,16 +925,42 @@ export function ImageAnnotator({ imageUrl, onConfirm, onCancel, initialResizeMod // 确保使用的是原图URL(检查URL中是否包含thumb标识) let downloadUrl = processedImageUrl; + + // 更完善的缩略图URL转换逻辑 if (downloadUrl.includes("-thumb") || downloadUrl.includes("/thumb/") || downloadUrl.includes("thumbnail")) { // 如果URL包含thumb标识,尝试转换为原图URL + // 处理各种可能的格式: + // - rmbg-thumb-xxx.png -> rmbg-orig-xxx.png + // - enhance-thumb-xxx.jpg -> enhance-orig-xxx.jpg + // - extend-thumb-xxx.jpg -> extend-orig-xxx.jpg + // - xxx/thumb/xxx -> xxx/orig/xxx downloadUrl = downloadUrl .replace(/-thumb-/g, "-orig-") + .replace(/-thumb\./g, "-orig.") .replace(/\/thumb\//g, "/orig/") .replace(/thumbnail/g, "original"); console.warn("[下载] ⚠️ 检测到缩略图URL,已转换为原图URL:", downloadUrl); } - console.log("[下载] 下载URL:", downloadUrl); + // 如果转换后的URL仍然包含thumb标识,尝试更激进的转换 + if (downloadUrl.includes("thumb")) { + try { + // 尝试直接替换文件名中的thumb为orig + const urlObj = new URL(downloadUrl); + const pathname = urlObj.pathname; + if (pathname.includes("thumb")) { + const newPathname = pathname.replace(/thumb/g, "orig"); + downloadUrl = downloadUrl.replace(pathname, newPathname); + console.warn("[下载] ⚠️ 二次转换原图URL:", downloadUrl); + } + } catch (urlError) { + // 如果URL解析失败,尝试简单的字符串替换 + downloadUrl = downloadUrl.replace(/thumb/g, "orig"); + console.warn("[下载] ⚠️ 使用简单替换转换原图URL:", downloadUrl); + } + } + + console.log("[下载] 最终下载URL:", downloadUrl); // 从原图URL下载(原图已上传到S3) const response = await fetch(downloadUrl);