Commit 81afffcb authored by fisherdaddy's avatar fisherdaddy

feat: Add Image Annotator tool and update WechatFormatter title in multiple languages

parent d0e6a913
...@@ -31,6 +31,7 @@ const AnthropicTimeline = lazy(() => import('./components/AnthropicTimeline')); ...@@ -31,6 +31,7 @@ const AnthropicTimeline = lazy(() => import('./components/AnthropicTimeline'));
const DrugsList = lazy(() => import('./components/DrugsList')); const DrugsList = lazy(() => import('./components/DrugsList'));
const DeepSeekTimeline = lazy(() => import('./components/DeepSeekTimeline')); const DeepSeekTimeline = lazy(() => import('./components/DeepSeekTimeline'));
const WechatFormatter = lazy(() => import('./components/WechatFormatter')); const WechatFormatter = lazy(() => import('./components/WechatFormatter'));
const ImageAnnotator = lazy(() => import('./components/ImageAnnotator'));
function App() { function App() {
return ( return (
...@@ -69,6 +70,7 @@ function App() { ...@@ -69,6 +70,7 @@ function App() {
<Route path="/background-remover" element={<BackgroundRemover />} /> <Route path="/background-remover" element={<BackgroundRemover />} />
<Route path="/deepseek-timeline" element={<DeepSeekTimeline />} /> <Route path="/deepseek-timeline" element={<DeepSeekTimeline />} />
<Route path="/wechat-formatter" element={<WechatFormatter />} /> <Route path="/wechat-formatter" element={<WechatFormatter />} />
<Route path="/image-annotator" element={<ImageAnnotator />} />
<Route path="*" element={<NotFound />} /> <Route path="*" element={<NotFound />} />
</Routes> </Routes>
</Suspense> </Suspense>
......
This diff is collapsed.
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
"description": "A suite of practical image processing tools, including a handwriting font generator, Markdown to image converter, and quote to image creator, making image editing and creative design tasks easier." "description": "A suite of practical image processing tools, including a handwriting font generator, Markdown to image converter, and quote to image creator, making image editing and creative design tasks easier."
}, },
"blog": { "blog": {
"title": "Blog", "title": "AI News",
"description": "Offers the latest tech insights, development tips, and AI product reviews to help developers stay updated with cutting-edge information and improve their skills." "description": "Offers the latest tech insights, development tips, and AI product reviews to help developers stay updated with cutting-edge information and improve their skills."
}, },
"ai-products": { "ai-products": {
......
...@@ -239,5 +239,29 @@ ...@@ -239,5 +239,29 @@
"items": "items", "items": "items",
"allCategories": "All Categories", "allCategories": "All Categories",
"noResults": "No results found" "noResults": "No results found"
},
"wechatFormatter": {
"title": "WeChat Article Formatter",
"description": "Markdown and HTML content can be converted to WeChat format at once",
"input": "Input Content",
"output": "Output Content",
"inputPlaceholder": "Enter the text you want to format for WeChat here",
"format": "Format",
"copyOutput": "Copy Output",
"copiedMessage": "Copied to clipboard",
"copy": "Copy",
"copied": "Copied!"
},
"imageAnnotator": {
"title": "Image Annotator",
"description": "Upload an image and visualize bounding boxes using coordinates",
"uploadLabel": "Upload Image",
"urlLabel": "Or Image URL",
"urlPlaceholder": "https://example.com/image.jpg",
"coordinatesLabel": "Bounding Box Coordinates (x1,y1,x2,y2)",
"coordinatesPlaceholder": "Enter coordinates in JSON format: [[x1,y1,x2,y2], ...] or one box per line",
"downloadButton": "Download",
"noImageMessage": "Upload an image or provide an image URL to begin",
"resetView": "Reset View"
} }
} }
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
"description": "手書きフォント生成、Markdown画像変換、有名な引用句の画像化など、実用的な画像処理ツールを多数集め、画像編集とクリエイティブデザインの作業を簡単にします。" "description": "手書きフォント生成、Markdown画像変換、有名な引用句の画像化など、実用的な画像処理ツールを多数集め、画像編集とクリエイティブデザインの作業を簡単にします。"
}, },
"blog": { "blog": {
"title": "ブログ", "title": "AIニュース",
"description": "最新の技術情報、開発のヒント、AI製品のレビューなどを提供し、開発者が最新のトレンドに追いつき、スキルを向上させることをサポートします。" "description": "最新の技術共有、開発経験、AI製品レビューなどのコンテンツを提供し、開発者が最先端の情報を入手してスキルを向上できるようサポートします。"
}, },
"ai-products": { "ai-products": {
"title": "AI製品", "title": "AI製品",
......
...@@ -239,5 +239,26 @@ ...@@ -239,5 +239,26 @@
"items": "項目", "items": "項目",
"allCategories": "すべてのカテゴリ", "allCategories": "すべてのカテゴリ",
"noResults": "検索結果がありません" "noResults": "検索結果がありません"
},
"wechatFormatter": {
"title": "WeChat フォーマッター",
"description": "Markdown および HTML コンテンツを一度に WeChat フォーマットに変換",
"input": "入力内容",
"output": "出力内容",
"inputPlaceholder": "WeChat用に整列するテキストを入力してください",
"format": "フォーマット",
"copyOutput": "出力をコピー",
"copiedMessage": "コピーしました",
"copy": "コピー",
"copied": "コピーしました!"
},
"imageAnnotator": {
"title": "画像アノテーションツール",
"description": "画像に境界ボックスを追加して編集できます",
"uploadImage": "画像をアップロード",
"dropOrClick": "ドラッグまたはクリックして画像をアップロード",
"downloadButton": "ダウンロード",
"noImageMessage": "画像をアップロードするか、画像URLを提供して開始してください",
"resetView": "ビューをリセット"
} }
} }
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
"description": "손글씨 폰트 생성기, Markdown 이미지 변환기, 명언 이미지 생성기 등 다양한 실용적인 이미지 처리 도구를 제공하여, 이미지 편집과 창의적인 디자인 작업을 쉽게 수행할 수 있습니다." "description": "손글씨 폰트 생성기, Markdown 이미지 변환기, 명언 이미지 생성기 등 다양한 실용적인 이미지 처리 도구를 제공하여, 이미지 편집과 창의적인 디자인 작업을 쉽게 수행할 수 있습니다."
}, },
"blog": { "blog": {
"title": "블로그", "title": "AI 뉴스",
"description": "최신 기술 정보, 개발 팁, AI 제품 리뷰 등을 제공하여 개발자가 최신 트렌드에 맞춰 정보를 얻고 기술을 향상시킬 수 있도록 지원합니다." "description": "최신 기술 공유, 개발 경험, AI 제품 리뷰 등의 콘텐츠를 제공하여 개발자가 최신 정보를 얻고 기술을 향상시킬 수 있도록 돕습니다."
}, },
"ai-products": { "ai-products": {
"title": "AI 제품", "title": "AI 제품",
......
...@@ -240,5 +240,26 @@ ...@@ -240,5 +240,26 @@
"items": "항목", "items": "항목",
"allCategories": "모든 카테고리", "allCategories": "모든 카테고리",
"noResults": "검색 결과가 없습니다" "noResults": "검색 결과가 없습니다"
} },
"wechatFormatter": {
"title": "WeChat 서식 도우미",
"description": "Markdown 및 HTML 콘텐츠를 한 번에 WeChat 서식으로 변환",
"input": "입력 내용",
"output": "출력 내용",
"inputPlaceholder": "WeChat용으로 정렬할 텍스트를 입력하세요",
"format": "서식 지정",
"copyOutput": "결과 복사",
"copiedMessage": "클립보드에 복사됨",
"copy": "복사",
"copied": "복사 완료!"
},
"imageAnnotator": {
"title": "이미지 어노테이터",
"description": "이미지에 경계 상자를 추가하고 편집합니다",
"uploadImage": "이미지 업로드",
"dropOrClick": "드래그하거나 클릭하여 이미지 업로드",
"downloadButton": "다운로드",
"noImageMessage": "이미지를 업로드하거나 이미지 URL을 제공하세요",
"resetView": "뷰 초기화"
}
} }
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
"description": "集成多款实用的图片处理工具,包括手写字体生成器、Markdown转图片、名人名言转图片等,轻松完成图片编辑与创意设计工作。" "description": "集成多款实用的图片处理工具,包括手写字体生成器、Markdown转图片、名人名言转图片等,轻松完成图片编辑与创意设计工作。"
}, },
"blog": { "blog": {
"title": "博客", "title": "AI 资讯",
"description": "提供最新技术分享、开发经验、AI产品评测等内容,帮助开发者获取前沿资讯,提升技能。" "description": "提供最新技术分享、开发经验、AI产品评测等内容,帮助开发者获取前沿资讯,提升技能。"
}, },
"ai-products": { "ai-products": {
......
...@@ -226,24 +226,44 @@ ...@@ -226,24 +226,44 @@
"description": "Anthropic 公司重要产品及事件发布时间表" "description": "Anthropic 公司重要产品及事件发布时间表"
}, },
"deepSeekTimeline": { "deepSeekTimeline": {
"title": "DeepSeek 模型发布", "title": "DeepSeek 模型发布记录",
"description": "DeepSeek 模型发布时间一览" "description": "DeepSeek 重要模型发布及事件时间线"
}, },
"drugsList": { "drugsList": {
"title": "中国进口原研药目录", "title": "国内进口原研药目录",
"description": "药品名称、生产厂商和类别信息", "description": "药品名称、厂家和分类信息查询",
"searchPlaceholder": "搜索药品名称或生产厂商...", "searchPlaceholder": "搜索药品名称或厂家...",
"drugName": "药品名称", "drugName": "药品名称",
"manufacturer": "生产厂", "manufacturer": "生产厂",
"sourceTitle": "数据来源", "sourceTitle": "数据来源",
"sourceUrl": "mRNA福星情报局", "sourceUrl": "mRNA幸运情报局",
"showing": "显示", "showing": "显示",
"items": "个项目", "items": "",
"allCategories": "所有类别", "allCategories": "所有分类",
"noResults": "没有找到相关结果" "noResults": "未找到结果"
}, },
"wechatFormatter": { "wechatFormatter": {
"title": "微信公众号排版", "title": "微信公众号排版助手",
"description": "将 Markdown 或 HTML 转换为公众号排版" "description": "Markdown、 HTML 格式内容一键即可转为微信公众号排版",
"input": "输入内容",
"output": "输出内容",
"inputPlaceholder": "在此输入需要微信排版的文本",
"format": "格式化",
"copyOutput": "复制结果",
"copiedMessage": "已复制到剪贴板",
"copy": "复制",
"copied": "已复制!"
},
"imageAnnotator": {
"title": "图像标注工具",
"description": "上传图片并可视化显示边界框",
"uploadLabel": "上传图片",
"urlLabel": "或图片URL",
"urlPlaceholder": "https://example.com/image.jpg",
"coordinatesLabel": "边界框坐标 (x1,y1,x2,y2)",
"coordinatesPlaceholder": "输入坐标,JSON格式:[[x1,y1,x2,y2], ...] 或每行输入一个框",
"downloadButton": "下载",
"noImageMessage": "上传图片或提供图片URL开始",
"resetView": "重置视图"
} }
} }
...@@ -7,6 +7,8 @@ const tools = [ ...@@ -7,6 +7,8 @@ const tools = [
{ id: 'handwrite', icon: '/assets/icon/handwrite.png', path: '/handwriting' }, { id: 'handwrite', icon: '/assets/icon/handwrite.png', path: '/handwriting' },
{ id: 'quoteCard', icon: '/assets/icon/quotecard.png', path: '/quote-card' }, { id: 'quoteCard', icon: '/assets/icon/quotecard.png', path: '/quote-card' },
{ id: 'markdown2image', icon: '/assets/icon/markdown2image.png', path: '/markdown-to-image' }, { id: 'markdown2image', icon: '/assets/icon/markdown2image.png', path: '/markdown-to-image' },
{ id: 'wechatFormatter', icon: '/assets/icon/editor.png', path: '/wechat-formatter' },
{ id: 'imageAnnotator', icon: '/assets/icon/image-annotator.png', path: '/image-annotator' },
{ id: 'subtitleGenerator', icon: '/assets/icon/subtitle2image.png', path: '/subtitle-to-image' }, { id: 'subtitleGenerator', icon: '/assets/icon/subtitle2image.png', path: '/subtitle-to-image' },
{ id: 'imageCompressor', icon: '/assets/icon/image-compressor.png', path: '/image-compressor' }, { id: 'imageCompressor', icon: '/assets/icon/image-compressor.png', path: '/image-compressor' },
{ id: 'imageWatermark', icon: '/assets/icon/image-watermark.png', path: '/image-watermark' }, { id: 'imageWatermark', icon: '/assets/icon/image-watermark.png', path: '/image-watermark' },
...@@ -22,7 +24,6 @@ const tools = [ ...@@ -22,7 +24,6 @@ const tools = [
{ id: 'deepSeekTimeline', icon: '/assets/icon/deepseek_small.jpg', path: '/deepseek-timeline' }, { id: 'deepSeekTimeline', icon: '/assets/icon/deepseek_small.jpg', path: '/deepseek-timeline' },
{ id: 'modelPrice', icon: '/assets/icon/model-price.svg', path: '/llm-model-price' }, { id: 'modelPrice', icon: '/assets/icon/model-price.svg', path: '/llm-model-price' },
{ id: 'drugsList', icon: '/assets/icon/drugs.svg', path: '/drugs-list' }, { id: 'drugsList', icon: '/assets/icon/drugs.svg', path: '/drugs-list' },
{ id: 'wechatFormatter', icon: '/assets/icon/editor.png', path: '/wechat-formatter' },
{ id: 'fisherai', icon: '/assets/icon/fisherai.png', path: 'https://chromewebstore.google.com/detail/fisherai-your-best-summar/ipfiijaobcenaibdpaacbbpbjefgekbj', external: true } { id: 'fisherai', icon: '/assets/icon/fisherai.png', path: 'https://chromewebstore.google.com/detail/fisherai-your-best-summar/ipfiijaobcenaibdpaacbbpbjefgekbj', external: true }
]; ];
......
...@@ -13,6 +13,7 @@ const tools = [ ...@@ -13,6 +13,7 @@ const tools = [
{ id: 'imageWatermark', icon: '/assets/icon/image-watermark.png', path: '/image-watermark' }, { id: 'imageWatermark', icon: '/assets/icon/image-watermark.png', path: '/image-watermark' },
{ id: 'imageBackgroundRemover', icon: '/assets/icon/image-background-remover.png', path: '/background-remover' }, { id: 'imageBackgroundRemover', icon: '/assets/icon/image-background-remover.png', path: '/background-remover' },
{ id: 'textBehindImage', icon: '/assets/icon/text-behind-image.png', path: '/text-behind-image' }, { id: 'textBehindImage', icon: '/assets/icon/text-behind-image.png', path: '/text-behind-image' },
{ id: 'imageAnnotator', icon: '/assets/icon/image-annotator.png', path: '/image-annotator' },
]; ];
const ImageTools = () => { const ImageTools = () => {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment