diff --git a/public/_locales/zh/messages.json b/public/_locales/zh/messages.json index 81dbbb0..bd41e3e 100644 --- a/public/_locales/zh/messages.json +++ b/public/_locales/zh/messages.json @@ -617,7 +617,7 @@ "description": "Translation key: qrCode_resultPlaceholder" }, "qrCode_imageToQr": { - "message": "图片转二维码", + "message": "解析图片二维码", "description": "Translation key: qrCode_imageToQr" }, "rightClickRestorer_loading": { diff --git a/src/pages/QrCode/hooks/useQrCode.ts b/src/pages/QrCode/hooks/useQrCode.ts index ed94977..a88b019 100644 --- a/src/pages/QrCode/hooks/useQrCode.ts +++ b/src/pages/QrCode/hooks/useQrCode.ts @@ -27,9 +27,26 @@ function isUrl(text: string): boolean { /** 检测URL是否为图片格式 */ function isImageUrl(url: string): boolean { + const trimmedUrl = url.trim().toLowerCase(); + + // 检查是否为 data:image 格式 + if (trimmedUrl.startsWith('data:image/')) { + return true; + } + + // 检查是否包含图片扩展名 const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.svg', '.ico']; - const lowerUrl = url.toLowerCase(); - return imageExtensions.some((ext) => lowerUrl.includes(ext)); + if (imageExtensions.some((ext) => trimmedUrl.includes(ext))) { + return true; + } + + // 检查URL路径中是否包含图片相关关键词 + const imageKeywords = ['/image/', '/img/', '/photo/', '/pic/', '/upload/']; + if (imageKeywords.some((keyword) => trimmedUrl.includes(keyword))) { + return true; + } + + return false; } /** 生成二维码的核心逻辑 */ diff --git a/src/utils/__tests__/contextMenu.test.ts b/src/utils/__tests__/contextMenu.test.ts index f4b34c1..071619b 100644 --- a/src/utils/__tests__/contextMenu.test.ts +++ b/src/utils/__tests__/contextMenu.test.ts @@ -50,7 +50,7 @@ describe('contextMenu', () => { ); expect(imageMenus).toHaveLength(1); expect(imageMenus[0].id).toBe('qrCode-image'); - expect(imageMenus[0].title).toBe('🖼️ 图片转二维码'); + expect(imageMenus[0].title).toBe('🖼️ 解析图片二维码'); }); }); diff --git a/src/utils/contextMenu.ts b/src/utils/contextMenu.ts index bde2e3b..f394619 100644 --- a/src/utils/contextMenu.ts +++ b/src/utils/contextMenu.ts @@ -80,7 +80,7 @@ export const CONTEXT_MENU_CONFIGS: ContextMenuItemConfig[] = [ }, { id: 'qrCode-image', - title: '🖼️ 图片转二维码', + title: '🖼️ 解析图片二维码', contexts: [chrome.contextMenus.ContextType.IMAGE], parentId: PARENT_MENU_ID, },