Commit e7b159c4 authored by fisherdaddy's avatar fisherdaddy

chore: 新增背景去除第三方工具BRIA-RMBG-2.0

parent 6a9748c1
public/assets/icon/quotecard.png

178 KB | W: | H:

public/assets/icon/quotecard.png

174 KB | W: | H:

public/assets/icon/quotecard.png
public/assets/icon/quotecard.png
public/assets/icon/quotecard.png
public/assets/icon/quotecard.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -185,5 +185,9 @@ ...@@ -185,5 +185,9 @@
}, },
"download": "Download Image", "download": "Download Image",
"noImage": "Please upload an image" "noImage": "Please upload an image"
},
"imageBackgroundRemover": {
"title": "Image Background Remover",
"description": "Remove image background"
}
} }
}
\ No newline at end of file
...@@ -185,5 +185,9 @@ ...@@ -185,5 +185,9 @@
}, },
"download": "画像をダウンロード", "download": "画像をダウンロード",
"noImage": "画像をアップロードしてください" "noImage": "画像をアップロードしてください"
} },
} "imageBackgroundRemover": {
\ No newline at end of file "title": "画像背景の削除",
"description": "画像の背景を削除"
}
}
...@@ -186,5 +186,9 @@ ...@@ -186,5 +186,9 @@
}, },
"download": "이미지 다운로드", "download": "이미지 다운로드",
"noImage": "이미지를 업로드하세요" "noImage": "이미지를 업로드하세요"
},
"imageBackgroundRemover": {
"title": "이미지 배경 제거",
"description": "이미지 배경 제거"
} }
} }
\ No newline at end of file
...@@ -184,5 +184,9 @@ ...@@ -184,5 +184,9 @@
}, },
"download": "下载图片", "download": "下载图片",
"noImage": "请上传图片" "noImage": "请上传图片"
},
"imageBackgroundRemover": {
"title": "图片背景去除",
"description": "去除图片背景"
} }
} }
...@@ -10,6 +10,7 @@ const tools = [ ...@@ -10,6 +10,7 @@ const tools = [
{ 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' },
{ id: 'imageBackgroundRemover', icon: '/assets/icon/image-background-remover.png', path: 'https://huggingface.co/spaces/briaai/BRIA-RMBG-2.0', external: true },
{ id: 'latex2image', icon: '/assets/icon/latex2image.png', path: '/latex-to-image' }, { id: 'latex2image', icon: '/assets/icon/latex2image.png', path: '/latex-to-image' },
{ id: 'jsonFormatter', icon: '/assets/icon/json-format.png', path: '/json-formatter' }, { id: 'jsonFormatter', icon: '/assets/icon/json-format.png', path: '/json-formatter' },
......
...@@ -11,33 +11,57 @@ const tools = [ ...@@ -11,33 +11,57 @@ const tools = [
{ 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' },
{ id: 'imageBackgroundRemover', icon: '/assets/icon/image-background-remover.png', path: 'https://huggingface.co/spaces/briaai/BRIA-RMBG-2.0', external: true },
]; ];
const ImageTools = () => { const ImageTools = () => {
const { t } = useTranslation(); const { t } = useTranslation();
const renderToolLink = (tool) => {
const content = (
<>
<img
src={tool.icon}
alt={`${t(`tools.${tool.id}.title`)} icon`}
className="tool-icon"
loading="lazy"
/>
<div className="tool-content">
<h3 className="tool-title">{t(`tools.${tool.id}.title`)}</h3>
<p className="tool-description">{t(`tools.${tool.id}.description`)}</p>
</div>
</>
);
return tool.external ? (
<a
href={tool.path}
className="tool-card"
target="_blank"
rel="noopener noreferrer"
>
{content}
</a>
) : (
<Link to={tool.path} className="tool-card">
{content}
</Link>
);
};
return ( return (
<> <>
<SEO <SEO
title={t('image-tools.title')} title={t('title')}
description={t('image-tools.description')} description={t('slogan')}
/> />
<main> <main>
<section className="tools-section"> <section className="tools-section">
<div className="tools-grid"> <div className="tools-grid">
{tools.map(tool => ( {tools.map(tool => (
<Link to={tool.path} key={tool.id} className="tool-card"> <React.Fragment key={tool.id}>
<img {renderToolLink(tool)}
src={tool.icon} </React.Fragment>
alt={`${t(`tools.${tool.id}.title`)} icon`}
className="tool-icon"
loading="lazy"
/>
<div className="tool-content">
<h3 className="tool-title">{t(`tools.${tool.id}.title`)}</h3>
<p className="tool-description">{t(`tools.${tool.id}.description`)}</p>
</div>
</Link>
))} ))}
</div> </div>
</section> </section>
......
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