修复图片编辑器下载和图像拓展错误处理
- 改进下载逻辑,支持多种缩略图URL格式转换(-thumb-、-thumb.、/thumb/等) - 添加二次转换逻辑,确保正确转换为原图URL - 修复图像拓展错误处理,正确显示错误信息 - 添加详细调试日志,帮助定位问题 - 确保抠图和变清晰功能正确下载原图
This commit is contained in:
parent
dbf10c1d02
commit
9d40b78ea5
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user