Commit b091178c authored by fisherdaddy's avatar fisherdaddy

feat: add ID Photo Maker tool with multi-size options and localization support

parent f6659dfd
...@@ -29,6 +29,7 @@ const ImageCompressor = lazy(() => import('./components/ImageCompressor')); ...@@ -29,6 +29,7 @@ const ImageCompressor = lazy(() => import('./components/ImageCompressor'));
const ImageWatermark = lazy(() => import('./components/ImageWatermark')); const ImageWatermark = lazy(() => import('./components/ImageWatermark'));
const TextBehindImage = lazy(() => import('./components/TextBehindImage')); const TextBehindImage = lazy(() => import('./components/TextBehindImage'));
const BackgroundRemover = lazy(() => import('./components/BackgroundRemover')); const BackgroundRemover = lazy(() => import('./components/BackgroundRemover'));
const IDPhotoMaker = lazy(() => import('./components/IDPhotoMaker'));
const AnthropicTimeline = lazy(() => import('./components/AnthropicTimeline')); 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'));
...@@ -74,6 +75,7 @@ function App() { ...@@ -74,6 +75,7 @@ function App() {
<Route path="/image-watermark" element={<ImageWatermark />} /> <Route path="/image-watermark" element={<ImageWatermark />} />
<Route path="/text-behind-image" element={<TextBehindImage />} /> <Route path="/text-behind-image" element={<TextBehindImage />} />
<Route path="/background-remover" element={<BackgroundRemover />} /> <Route path="/background-remover" element={<BackgroundRemover />} />
<Route path="/id-photo-maker" element={<IDPhotoMaker />} />
<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="/image-annotator" element={<ImageAnnotator />} />
......
This diff is collapsed.
...@@ -283,5 +283,31 @@ ...@@ -283,5 +283,31 @@
"perpetualCalendar": { "perpetualCalendar": {
"title": "Perpetual Calendar", "title": "Perpetual Calendar",
"description": "View any month of any year with this perpetual calendar" "description": "View any month of any year with this perpetual calendar"
},
"idPhotoMaker": {
"title": "ID Photo Maker",
"description": "Convert any photo into standard ID photos with various size options",
"uploadPrompt": "Click or drag to upload photo",
"selectSize": "Select Size",
"sizes": {
"small1inch": "Small 1 Inch (22×32mm)",
"1inch": "1 Inch (25×35mm)",
"large1inch": "Large 1 Inch (33×48mm)",
"small2inch": "Small 2 Inch (35×45mm)",
"2inch": "2 Inch (35×49mm)",
"large2inch": "Large 2 Inch (35×53mm)",
"3inch": "3 Inch (55×84mm)",
"4inch": "4 Inch (76×102mm)",
"5inch": "5 Inch (89×127mm)"
},
"processing": "Processing...",
"noImage": "Please upload a photo first",
"download": "Download ID Photo",
"preview": "Preview",
"backgroundRemoval": "Removing background...",
"addingBackground": "Adding white background...",
"resizing": "Resizing...",
"privacyNote": "This feature runs entirely in your browser with no risk of privacy data leakage. Feel free to use it.",
"instructions": "Instructions:\n1. Upload a portrait photo\n2. Select the desired ID photo size\n3. The system will automatically remove background and add white background\n4. Click download button to save the ID photo"
} }
} }
...@@ -279,5 +279,31 @@ ...@@ -279,5 +279,31 @@
"CULTURE": "文化", "CULTURE": "文化",
"OPEN_SOURCE": "オープンソース" "OPEN_SOURCE": "オープンソース"
} }
},
"idPhotoMaker": {
"title": "証明写真作成",
"description": "任意の写真を標準的な証明写真に変換し、さまざまなサイズに対応",
"uploadPrompt": "クリックまたはドラッグして写真をアップロード",
"selectSize": "サイズを選択",
"sizes": {
"small1inch": "小1インチ (22×32mm)",
"1inch": "1インチ (25×35mm)",
"large1inch": "大1インチ (33×48mm)",
"small2inch": "小2インチ (35×45mm)",
"2inch": "2インチ (35×49mm)",
"large2inch": "大2インチ (35×53mm)",
"3inch": "3インチ (55×84mm)",
"4inch": "4インチ (76×102mm)",
"5inch": "5インチ (89×127mm)"
},
"processing": "処理中...",
"noImage": "先に写真をアップロードしてください",
"download": "証明写真をダウンロード",
"preview": "プレビュー",
"backgroundRemoval": "背景削除中...",
"addingBackground": "白い背景を追加中...",
"resizing": "サイズ調整中...",
"privacyNote": "この機能は完全にブラウザ内で実行され、プライバシーの漏洩リスクはありません。安心してご利用ください。",
"instructions": "使用方法:\n1. 人物写真をアップロード\n2. 希望する証明写真のサイズを選択\n3. システムが自動的に背景を削除し、白い背景を追加\n4. ダウンロードボタンをクリックして証明写真を保存"
} }
} }
...@@ -280,5 +280,31 @@ ...@@ -280,5 +280,31 @@
"CULTURE": "문화", "CULTURE": "문화",
"OPEN_SOURCE": "오픈 소스" "OPEN_SOURCE": "오픈 소스"
} }
},
"idPhotoMaker": {
"title": "증명사진 제작",
"description": "임의의 사진을 표준 증명사진으로 변환하며, 다양한 크기 옵션을 제공",
"uploadPrompt": "클릭하거나 드래그하여 사진을 업로드하세요",
"selectSize": "크기 선택",
"sizes": {
"small1inch": "소형 1인치 (22×32mm)",
"1inch": "1인치 (25×35mm)",
"large1inch": "대형 1인치 (33×48mm)",
"small2inch": "소형 2인치 (35×45mm)",
"2inch": "2인치 (35×49mm)",
"large2inch": "대형 2인치 (35×53mm)",
"3inch": "3인치 (55×84mm)",
"4inch": "4인치 (76×102mm)",
"5inch": "5인치 (89×127mm)"
},
"processing": "처리 중...",
"noImage": "먼저 사진을 업로드하세요",
"download": "증명사진 다운로드",
"preview": "미리보기",
"backgroundRemoval": "배경 제거 중...",
"addingBackground": "흰색 배경 추가 중...",
"resizing": "크기 조정 중...",
"privacyNote": "이 기능은 완전히 브라우저 내에서 실행되며, 개인정보 유출 위험이 없습니다. 안심하고 사용하세요.",
"instructions": "사용 방법:\n1. 인물 사진을 업로드하세요\n2. 원하는 증명사진 크기를 선택하세요\n3. 시스템이 자동으로 배경을 제거하고 흰색 배경을 추가합니다\n4. 다운로드 버튼을 클릭하여 증명사진을 저장하세요"
} }
} }
...@@ -285,5 +285,31 @@ ...@@ -285,5 +285,31 @@
"perpetualCalendar": { "perpetualCalendar": {
"title": "万年历", "title": "万年历",
"description": "查看任意年份任意月份的日历" "description": "查看任意年份任意月份的日历"
},
"idPhotoMaker": {
"title": "证件照制作",
"description": "将任意照片制作成标准证件照,支持多种尺寸规格",
"uploadPrompt": "点击或拖拽上传照片",
"selectSize": "选择尺寸",
"sizes": {
"small1inch": "小一寸 (22×32mm)",
"1inch": "一寸 (25×35mm)",
"large1inch": "大一寸 (33×48mm)",
"small2inch": "小二寸 (35×45mm)",
"2inch": "二寸 (35×49mm)",
"large2inch": "大二寸 (35×53mm)",
"3inch": "三寸 (55×84mm)",
"4inch": "四寸 (76×102mm)",
"5inch": "五寸 (89×127mm)"
},
"processing": "正在处理...",
"noImage": "请先上传照片",
"download": "下载证件照",
"preview": "预览效果",
"backgroundRemoval": "背景去除中...",
"addingBackground": "添加白色背景...",
"resizing": "调整尺寸...",
"privacyNote": "本功能完全在浏览器本地执行,无隐私数据泄露风险,请放心使用。",
"instructions": "操作说明:\n1. 上传一张人像照片\n2. 选择所需的证件照尺寸\n3. 系统会自动去除背景并添加白色背景\n4. 点击下载按钮保存证件照"
} }
} }
...@@ -8,6 +8,7 @@ const tools = [ ...@@ -8,6 +8,7 @@ const tools = [
{ 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: 'wechatFormatter', icon: '/assets/icon/editor.png', path: '/wechat-formatter' },
{ id: 'idPhotoMaker', icon: '/assets/icon/idcard.png', path: '/id-photo-maker' },
{ id: 'perpetualCalendar', icon: '/assets/icon/calendar.jpg', path: '/perpetual-calendar' }, { id: 'perpetualCalendar', icon: '/assets/icon/calendar.jpg', path: '/perpetual-calendar' },
{ id: 'imageAnnotator', icon: '/assets/icon/image-annotator.png', path: '/image-annotator' }, { 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' },
......
...@@ -12,6 +12,7 @@ const tools = [ ...@@ -12,6 +12,7 @@ const tools = [
{ 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' },
{ 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: 'idPhotoMaker', icon: '/assets/icon/idcard.png', path: '/id-photo-maker' },
{ 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' }, { id: 'imageAnnotator', icon: '/assets/icon/image-annotator.png', path: '/image-annotator' },
]; ];
......
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