feat(tools): remove background from animated GIFs (WebP, APNG) (#502)

Adds a dedicated remove-gif-background AI tool: removes the background from an animated GIF, WebP, or APNG frame by frame and reassembles a transparent (or composited) animation in WebP, APNG, or GIF, with full per-frame effects. Reuses the background-removal bundle. Verified end-to-end with the real rembg model.

Closes #496.
This commit is contained in:
SnapOtter
2026-07-11 19:53:00 +08:00
committed by GitHub
parent e7cfc00fe1
commit cb5db59f77
50 changed files with 2240 additions and 6 deletions
+24
View File
@@ -226,6 +226,29 @@ const BASE_TOOLS: Tool[] = [
acceptedInputs: IMAGE_INPUTS,
executionHint: "long",
},
{
id: "remove-gif-background",
name: "Remove GIF Background",
description: "AI background removal for animated GIFs, WebP, and APNG",
category: "enhance",
icon: "Film",
route: "/remove-gif-background",
modality: "image",
acceptedInputs: [".gif", ".webp", ".apng", ".png"],
executionHint: "long",
keywords: [
"gif",
"animated",
"transparent gif",
"animated webp",
"apng",
"remove gif background",
"gif background",
"animated background removal",
"transparent background gif",
"gif cutout",
],
},
{
id: "upscale",
name: "Image Upscaling",
@@ -2635,6 +2658,7 @@ export const APP_VERSION = "2.1.0";
*/
export const PYTHON_SIDECAR_TOOLS = [
"remove-background",
"remove-gif-background",
"upscale",
"blur-faces",
"erase-object",
+1
View File
@@ -35,6 +35,7 @@ export const FEATURE_BUNDLES: Record<string, FeatureBundleInfo> = {
estimatedSize: "4-5 GB",
enablesTools: [
"remove-background",
"remove-gif-background",
"passport-photo",
"transparency-fixer",
"background-replace",
+36
View File
@@ -1505,6 +1505,42 @@ export const ar: TranslationKeys = {
submitBatch: "إزالة الخلفية ({count} ملف)",
progressLabel: "جاري إزالة الخلفية",
},
"remove-gif-background": {
quality: "الجودة",
qualityFast: "سريع",
qualityBalanced: "متوازن",
qualityBest: "الأفضل",
qualityNote: "يمر كل إطار عبر النموذج، لذا فإن الجودة الأعلى أبطأ بكثير في المقاطع الطويلة.",
outputFormat: "صيغة المخرجات",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "يحافظ WebP وAPNG على شفافية كاملة وسلسة.",
gifCaveat: "يدعم GIF شفافية بمقدار بت واحد فقط، لذا تبدو الحواف حادة.",
background: "الخلفية",
bgTransparent: "شفاف",
bgColor: "لون",
bgGradient: "تدرج",
bgBlur: "تمويه",
bgImage: "صورة",
gradientStart: "البداية",
gradientEnd: "النهاية",
gradientAngle: "الزاوية ({deg}°)",
blurStrength: "قوة التمويه ({value})",
shadow: "إضافة ظل",
shadowStrength: "شفافية الظل ({value})",
advanced: "متقدم",
edgeRefine: "تحسين الحواف (المستوى {level})",
edgeRefineOff: "تحسين الحواف: إيقاف",
decontaminate: "إزالة تسرب الألوان",
uploadBg: "رفع صورة خلفية",
frameNote:
"تتم معالجة كل إطار، لذا فإن الرسوم المتحركة الطويلة بطيئة. يُنصح باستخدام بطاقة رسوميات.",
submit: "إزالة الخلفية",
submitBatch: "إزالة الخلفية ({count} ملف)",
progressLabel: "جاري إزالة الخلفية من الإطارات",
download: "تنزيل",
},
upscale: {
scaleFactor: "عامل التكبير",
quality: "الجودة",
+37
View File
@@ -1521,6 +1521,43 @@ export const de: TranslationKeys = {
submitBatch: "Hintergrund entfernen ({count} Dateien)",
progressLabel: "Hintergrund wird entfernt",
},
"remove-gif-background": {
quality: "Qualität",
qualityFast: "Schnell",
qualityBalanced: "Ausgewogen",
qualityBest: "Beste",
qualityNote:
"Jedes Bild durchläuft das Modell, daher ist höhere Qualität bei langen Clips deutlich langsamer.",
outputFormat: "Ausgabeformat",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP und APNG behalten weiche, vollständige Transparenz.",
gifCaveat: "GIF unterstützt nur 1-Bit-Transparenz, daher wirken die Kanten hart.",
background: "Hintergrund",
bgTransparent: "Transparent",
bgColor: "Farbe",
bgGradient: "Verlauf",
bgBlur: "Weichzeichnen",
bgImage: "Bild",
gradientStart: "Anfang",
gradientEnd: "Ende",
gradientAngle: "Winkel ({deg}°)",
blurStrength: "Weichzeichnungsstärke ({value})",
shadow: "Schatten hinzufügen",
shadowStrength: "Schattendeckkraft ({value})",
advanced: "Erweitert",
edgeRefine: "Kantenverfeinerung (Stufe {level})",
edgeRefineOff: "Kantenverfeinerung: aus",
decontaminate: "Farbüberlauf entfernen",
uploadBg: "Hintergrundbild hochladen",
frameNote:
"Jedes Bild wird verarbeitet, daher sind lange Animationen langsam. Eine GPU wird empfohlen.",
submit: "Hintergrund entfernen",
submitBatch: "Hintergrund entfernen ({count} Dateien)",
progressLabel: "Hintergrund wird aus Bildern entfernt",
download: "Herunterladen",
},
upscale: {
scaleFactor: "Skalierungsfaktor",
quality: "Qualität",
+36
View File
@@ -1469,6 +1469,42 @@ export const en = {
submitBatch: "Remove Background ({count} files)",
progressLabel: "Removing background",
},
"remove-gif-background": {
quality: "Quality",
qualityFast: "Fast",
qualityBalanced: "Balanced",
qualityBest: "Best",
qualityNote:
"Every frame runs through the model, so higher quality is much slower on long clips.",
outputFormat: "Output format",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP and APNG keep smooth, full transparency.",
gifCaveat: "GIF supports only 1-bit transparency, so edges look hard.",
background: "Background",
bgTransparent: "Transparent",
bgColor: "Color",
bgGradient: "Gradient",
bgBlur: "Blur",
bgImage: "Image",
gradientStart: "Start",
gradientEnd: "End",
gradientAngle: "Angle ({deg}°)",
blurStrength: "Blur strength ({value})",
shadow: "Add drop shadow",
shadowStrength: "Shadow opacity ({value})",
advanced: "Advanced",
edgeRefine: "Edge refine (level {level})",
edgeRefineOff: "Edge refine: off",
decontaminate: "Remove color spill",
uploadBg: "Upload background image",
frameNote: "Processes every frame, so long animations are slow. A GPU is recommended.",
submit: "Remove Background",
submitBatch: "Remove Background ({count} files)",
progressLabel: "Removing background from frames",
download: "Download",
},
upscale: {
scaleFactor: "Scale Factor",
quality: "Quality",
+37
View File
@@ -1504,6 +1504,43 @@ export const es: TranslationKeys = {
submitBatch: "Eliminar fondo ({count} archivos)",
progressLabel: "Eliminando fondo",
},
"remove-gif-background": {
quality: "Calidad",
qualityFast: "Rápido",
qualityBalanced: "Equilibrado",
qualityBest: "Mejor",
qualityNote:
"Cada fotograma pasa por el modelo, así que una calidad mayor es mucho más lenta en clips largos.",
outputFormat: "Formato de salida",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP y APNG mantienen una transparencia suave y completa.",
gifCaveat: "GIF solo admite transparencia de 1 bit, así que los bordes se ven duros.",
background: "Fondo",
bgTransparent: "Transparente",
bgColor: "Color",
bgGradient: "Degradado",
bgBlur: "Desenfoque",
bgImage: "Imagen",
gradientStart: "Inicio",
gradientEnd: "Fin",
gradientAngle: "Ángulo ({deg}°)",
blurStrength: "Intensidad del desenfoque ({value})",
shadow: "Agregar sombra",
shadowStrength: "Opacidad de la sombra ({value})",
advanced: "Avanzado",
edgeRefine: "Refinar bordes (nivel {level})",
edgeRefineOff: "Refinar bordes: desactivado",
decontaminate: "Eliminar derrame de color",
uploadBg: "Subir imagen de fondo",
frameNote:
"Procesa cada fotograma, así que las animaciones largas son lentas. Se recomienda una GPU.",
submit: "Eliminar fondo",
submitBatch: "Eliminar fondo ({count} archivos)",
progressLabel: "Eliminando fondo de los fotogramas",
download: "Descargar",
},
upscale: {
scaleFactor: "Factor de escala",
quality: "Calidad",
+38
View File
@@ -1527,6 +1527,44 @@ export const fr: TranslationKeys = {
submitBatch: "Supprimer l'arrière-plan ({count} fichiers)",
progressLabel: "Suppression de l'arrière-plan",
},
"remove-gif-background": {
quality: "Qualité",
qualityFast: "Rapide",
qualityBalanced: "Équilibré",
qualityBest: "Meilleure",
qualityNote:
"Chaque image passe par le modèle, donc une meilleure qualité est bien plus lente sur les clips longs.",
outputFormat: "Format de sortie",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP et APNG conservent une transparence complète et fluide.",
gifCaveat:
"GIF ne prend en charge qu'une transparence de 1 bit, donc les bords paraissent nets.",
background: "Arrière-plan",
bgTransparent: "Transparent",
bgColor: "Couleur",
bgGradient: "Dégradé",
bgBlur: "Flou",
bgImage: "Image",
gradientStart: "Début",
gradientEnd: "Fin",
gradientAngle: "Angle ({deg}°)",
blurStrength: "Intensité du flou ({value})",
shadow: "Ajouter une ombre",
shadowStrength: "Opacité de l'ombre ({value})",
advanced: "Avancé",
edgeRefine: "Affinage des bords (niveau {level})",
edgeRefineOff: "Affinage des bords : désactivé",
decontaminate: "Supprimer la diffusion de couleur",
uploadBg: "Téléverser une image d'arrière-plan",
frameNote:
"Traite chaque image, donc les longues animations sont lentes. Un GPU est recommandé.",
submit: "Supprimer l'arrière-plan",
submitBatch: "Supprimer l'arrière-plan ({count} fichiers)",
progressLabel: "Suppression de l'arrière-plan des images",
download: "Télécharger",
},
upscale: {
scaleFactor: "Facteur d'échelle",
quality: "Qualité",
+35
View File
@@ -1336,6 +1336,41 @@ export const hi: TranslationKeys = {
submitBatch: "बैकग्राउंड हटाएं ({count} फाइलें)",
progressLabel: "बैकग्राउंड हटाया जा रहा है",
},
"remove-gif-background": {
quality: "क्वालिटी",
qualityFast: "तेज़",
qualityBalanced: "संतुलित",
qualityBest: "सर्वोत्तम",
qualityNote: "हर फ्रेम मॉडल से गुज़रता है, इसलिए लंबी क्लिप पर ज़्यादा क्वालिटी काफ़ी धीमी होती है।",
outputFormat: "आउटपुट फ़ॉर्मेट",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP और APNG स्मूद, पूर्ण पारदर्शिता बनाए रखते हैं।",
gifCaveat: "GIF केवल 1-बिट पारदर्शिता को सपोर्ट करता है, इसलिए किनारे कठोर दिखते हैं।",
background: "बैकग्राउंड",
bgTransparent: "पारदर्शी",
bgColor: "रंग",
bgGradient: "ग्रेडिएंट",
bgBlur: "ब्लर",
bgImage: "इमेज",
gradientStart: "शुरुआत",
gradientEnd: "अंत",
gradientAngle: "कोण ({deg}°)",
blurStrength: "ब्लर की तीव्रता ({value})",
shadow: "ड्रॉप शैडो जोड़ें",
shadowStrength: "शैडो ओपेसिटी ({value})",
advanced: "उन्नत",
edgeRefine: "एज रिफाइन (स्तर {level})",
edgeRefineOff: "एज रिफाइन: बंद",
decontaminate: "कलर स्पिल हटाएं",
uploadBg: "बैकग्राउंड इमेज अपलोड करें",
frameNote: "हर फ्रेम प्रोसेस होता है, इसलिए लंबी एनिमेशन धीमी होती हैं। GPU की सलाह दी जाती है।",
submit: "बैकग्राउंड हटाएं",
submitBatch: "बैकग्राउंड हटाएं ({count} फाइलें)",
progressLabel: "फ्रेम से बैकग्राउंड हटाया जा रहा है",
download: "डाउनलोड",
},
upscale: {
scaleFactor: "स्केल फैक्टर",
quality: "क्वालिटी",
+36
View File
@@ -1515,6 +1515,42 @@ export const id: TranslationKeys = {
submitBatch: "Hapus Latar Belakang ({count} file)",
progressLabel: "Menghapus latar belakang",
},
"remove-gif-background": {
quality: "Kualitas",
qualityFast: "Cepat",
qualityBalanced: "Seimbang",
qualityBest: "Terbaik",
qualityNote:
"Setiap frame diproses melalui model, jadi kualitas lebih tinggi jauh lebih lambat pada klip panjang.",
outputFormat: "Format Output",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP dan APNG mempertahankan transparansi penuh yang halus.",
gifCaveat: "GIF hanya mendukung transparansi 1-bit, jadi tepinya terlihat kasar.",
background: "Latar Belakang",
bgTransparent: "Transparan",
bgColor: "Warna",
bgGradient: "Gradien",
bgBlur: "Blur",
bgImage: "Gambar",
gradientStart: "Mulai",
gradientEnd: "Akhir",
gradientAngle: "Sudut ({deg}°)",
blurStrength: "Kekuatan blur ({value})",
shadow: "Tambah bayangan",
shadowStrength: "Opasitas bayangan ({value})",
advanced: "Lanjutan",
edgeRefine: "Perhalus tepi (level {level})",
edgeRefineOff: "Perhalus tepi: mati",
decontaminate: "Hapus rembesan warna",
uploadBg: "Unggah gambar latar",
frameNote: "Memproses setiap frame, jadi animasi panjang lambat. GPU disarankan.",
submit: "Hapus Latar Belakang",
submitBatch: "Hapus Latar Belakang ({count} file)",
progressLabel: "Menghapus latar belakang dari frame",
download: "Unduh",
},
upscale: {
scaleFactor: "Faktor Skala",
quality: "Kualitas",
+37
View File
@@ -1519,6 +1519,43 @@ export const it: TranslationKeys = {
submitBatch: "Rimuovi sfondo ({count} file)",
progressLabel: "Rimozione sfondo",
},
"remove-gif-background": {
quality: "Qualità",
qualityFast: "Veloce",
qualityBalanced: "Bilanciata",
qualityBest: "Migliore",
qualityNote:
"Ogni fotogramma passa attraverso il modello, quindi una qualità più alta è molto più lenta sulle clip lunghe.",
outputFormat: "Formato di output",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP e APNG mantengono una trasparenza piena e uniforme.",
gifCaveat: "GIF supporta solo la trasparenza a 1 bit, quindi i bordi risultano netti.",
background: "Sfondo",
bgTransparent: "Trasparente",
bgColor: "Colore",
bgGradient: "Sfumatura",
bgBlur: "Sfocatura",
bgImage: "Immagine",
gradientStart: "Inizio",
gradientEnd: "Fine",
gradientAngle: "Angolo ({deg}°)",
blurStrength: "Intensità sfocatura ({value})",
shadow: "Aggiungi ombra",
shadowStrength: "Opacità ombra ({value})",
advanced: "Avanzate",
edgeRefine: "Rifinitura bordi (livello {level})",
edgeRefineOff: "Rifinitura bordi: disattivata",
decontaminate: "Rimuovi sbavature di colore",
uploadBg: "Carica immagine di sfondo",
frameNote:
"Elabora ogni fotogramma, quindi le animazioni lunghe sono lente. Si consiglia una GPU.",
submit: "Rimuovi sfondo",
submitBatch: "Rimuovi sfondo ({count} file)",
progressLabel: "Rimozione sfondo dai fotogrammi",
download: "Scarica",
},
upscale: {
scaleFactor: "Fattore di scala",
quality: "Qualità",
+37
View File
@@ -1476,6 +1476,43 @@ export const ja: TranslationKeys = {
submitBatch: "背景を除去({count}ファイル)",
progressLabel: "背景を除去中",
},
"remove-gif-background": {
quality: "品質",
qualityFast: "高速",
qualityBalanced: "バランス",
qualityBest: "最高",
qualityNote:
"すべてのフレームがモデルを通るため、長いクリップでは品質を上げると大幅に遅くなります。",
outputFormat: "出力形式",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebPとAPNGは滑らかで完全な透過を保ちます。",
gifCaveat: "GIFは1ビットの透過のみ対応のため、エッジが硬く見えます。",
background: "背景",
bgTransparent: "透明",
bgColor: "カラー",
bgGradient: "グラデーション",
bgBlur: "ぼかし",
bgImage: "画像",
gradientStart: "開始",
gradientEnd: "終了",
gradientAngle: "角度({deg}°)",
blurStrength: "ぼかしの強さ({value}",
shadow: "ドロップシャドウを追加",
shadowStrength: "シャドウの不透明度({value}",
advanced: "詳細設定",
edgeRefine: "エッジ補正(レベル{level}",
edgeRefineOff: "エッジ補正:オフ",
decontaminate: "色にじみを除去",
uploadBg: "背景画像をアップロード",
frameNote:
"すべてのフレームを処理するため、長いアニメーションは遅くなります。GPUを推奨します。",
submit: "背景を除去",
submitBatch: "背景を除去({count}ファイル)",
progressLabel: "フレームから背景を除去中",
download: "ダウンロード",
},
upscale: {
scaleFactor: "拡大倍率",
quality: "品質",
+35
View File
@@ -1460,6 +1460,41 @@ export const ko: TranslationKeys = {
submitBatch: "배경 제거 ({count}개 파일)",
progressLabel: "배경 제거 중",
},
"remove-gif-background": {
quality: "품질",
qualityFast: "빠름",
qualityBalanced: "균형",
qualityBest: "최고",
qualityNote: "모든 프레임이 모델을 거치므로, 긴 클립에서는 품질이 높을수록 훨씬 느립니다.",
outputFormat: "출력 형식",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP와 APNG는 매끄럽고 완전한 투명도를 유지합니다.",
gifCaveat: "GIF는 1비트 투명도만 지원해서 가장자리가 딱딱하게 보입니다.",
background: "배경",
bgTransparent: "투명",
bgColor: "색상",
bgGradient: "그라데이션",
bgBlur: "블러",
bgImage: "이미지",
gradientStart: "시작",
gradientEnd: "끝",
gradientAngle: "각도 ({deg}°)",
blurStrength: "블러 강도 ({value})",
shadow: "그림자 추가",
shadowStrength: "그림자 불투명도 ({value})",
advanced: "고급",
edgeRefine: "가장자리 다듬기 (레벨 {level})",
edgeRefineOff: "가장자리 다듬기: 끄기",
decontaminate: "색상 번짐 제거",
uploadBg: "배경 이미지 업로드",
frameNote: "모든 프레임을 처리하므로 긴 애니메이션은 느립니다. GPU를 권장합니다.",
submit: "배경 제거",
submitBatch: "배경 제거 ({count}개 파일)",
progressLabel: "프레임에서 배경 제거 중",
download: "다운로드",
},
upscale: {
scaleFactor: "확대 배율",
quality: "품질",
+36
View File
@@ -1519,6 +1519,42 @@ export const nl: TranslationKeys = {
submitBatch: "Achtergrond verwijderen ({count} bestanden)",
progressLabel: "Achtergrond verwijderen",
},
"remove-gif-background": {
quality: "Kwaliteit",
qualityFast: "Snel",
qualityBalanced: "Gebalanceerd",
qualityBest: "Beste",
qualityNote:
"Elk frame gaat door het model, dus hogere kwaliteit is veel trager bij lange clips.",
outputFormat: "Uitvoerformaat",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP en APNG behouden vloeiende, volledige transparantie.",
gifCaveat: "GIF ondersteunt alleen 1-bits transparantie, waardoor randen hard ogen.",
background: "Achtergrond",
bgTransparent: "Transparant",
bgColor: "Kleur",
bgGradient: "Verloop",
bgBlur: "Vervaging",
bgImage: "Afbeelding",
gradientStart: "Start",
gradientEnd: "Eind",
gradientAngle: "Hoek ({deg}°)",
blurStrength: "Vervagingssterkte ({value})",
shadow: "Slagschaduw toevoegen",
shadowStrength: "Schaduwdekking ({value})",
advanced: "Geavanceerd",
edgeRefine: "Randverfijning (niveau {level})",
edgeRefineOff: "Randverfijning: uit",
decontaminate: "Kleurranden verwijderen",
uploadBg: "Achtergrondafbeelding uploaden",
frameNote: "Verwerkt elk frame, dus lange animaties zijn traag. Een GPU wordt aanbevolen.",
submit: "Achtergrond verwijderen",
submitBatch: "Achtergrond verwijderen ({count} bestanden)",
progressLabel: "Achtergrond uit frames verwijderen",
download: "Downloaden",
},
upscale: {
scaleFactor: "Schaalfactor",
quality: "Kwaliteit",
+37
View File
@@ -1519,6 +1519,43 @@ export const pl: TranslationKeys = {
submitBatch: "Usuń tło ({count} plików)",
progressLabel: "Usuwanie tła",
},
"remove-gif-background": {
quality: "Jakość",
qualityFast: "Szybko",
qualityBalanced: "Zrównoważona",
qualityBest: "Najlepsza",
qualityNote:
"Każda klatka przechodzi przez model, więc wyższa jakość jest znacznie wolniejsza przy długich klipach.",
outputFormat: "Format wyjściowy",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP i APNG zachowują płynną, pełną przezroczystość.",
gifCaveat: "GIF obsługuje tylko 1-bitową przezroczystość, więc krawędzie wyglądają twardo.",
background: "Tło",
bgTransparent: "Przezroczyste",
bgColor: "Kolor",
bgGradient: "Gradient",
bgBlur: "Rozmycie",
bgImage: "Obraz",
gradientStart: "Początek",
gradientEnd: "Koniec",
gradientAngle: "Kąt ({deg}°)",
blurStrength: "Siła rozmycia ({value})",
shadow: "Dodaj cień",
shadowStrength: "Krycie cienia ({value})",
advanced: "Zaawansowane",
edgeRefine: "Wygładzanie krawędzi (poziom {level})",
edgeRefineOff: "Wygładzanie krawędzi: wył.",
decontaminate: "Usuń przebarwienia kolorów",
uploadBg: "Prześlij obraz tła",
frameNote:
"Przetwarza każdą klatkę, więc długie animacje są wolne. Zalecany jest procesor graficzny.",
submit: "Usuń tło",
submitBatch: "Usuń tło ({count} plików)",
progressLabel: "Usuwanie tła z klatek",
download: "Pobierz",
},
upscale: {
scaleFactor: "Współczynnik skali",
quality: "Jakość",
+36
View File
@@ -1518,6 +1518,42 @@ export const ptBR: TranslationKeys = {
submitBatch: "Remover fundo ({count} arquivos)",
progressLabel: "Removendo fundo",
},
"remove-gif-background": {
quality: "Qualidade",
qualityFast: "Rápido",
qualityBalanced: "Equilibrado",
qualityBest: "Melhor",
qualityNote:
"Cada quadro passa pelo modelo, então qualidade maior fica bem mais lenta em clipes longos.",
outputFormat: "Formato de saída",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP e APNG mantêm transparência total e suave.",
gifCaveat: "O GIF suporta apenas transparência de 1 bit, então as bordas ficam duras.",
background: "Fundo",
bgTransparent: "Transparente",
bgColor: "Cor",
bgGradient: "Degradado",
bgBlur: "Desfoque",
bgImage: "Imagem",
gradientStart: "Início",
gradientEnd: "Fim",
gradientAngle: "Ângulo ({deg}°)",
blurStrength: "Intensidade do desfoque ({value})",
shadow: "Adicionar sombra",
shadowStrength: "Opacidade da sombra ({value})",
advanced: "Avançado",
edgeRefine: "Refino de bordas (nível {level})",
edgeRefineOff: "Refino de bordas: desligado",
decontaminate: "Remover vazamento de cor",
uploadBg: "Enviar imagem de fundo",
frameNote: "Processa cada quadro, então animações longas são lentas. Recomenda-se uma GPU.",
submit: "Remover fundo",
submitBatch: "Remover fundo ({count} arquivos)",
progressLabel: "Removendo fundo dos quadros",
download: "Baixar",
},
upscale: {
scaleFactor: "Fator de escala",
quality: "Qualidade",
+36
View File
@@ -1515,6 +1515,42 @@ export const ru: TranslationKeys = {
submitBatch: "Удалить фон ({count} файлов)",
progressLabel: "Удаление фона",
},
"remove-gif-background": {
quality: "Качество",
qualityFast: "Быстро",
qualityBalanced: "Сбалансированно",
qualityBest: "Наилучшее",
qualityNote:
"Каждый кадр проходит через модель, поэтому более высокое качество значительно медленнее на длинных клипах.",
outputFormat: "Формат вывода",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP и APNG сохраняют плавную полную прозрачность.",
gifCaveat: "GIF поддерживает только 1-битную прозрачность, поэтому края выглядят жёсткими.",
background: "Фон",
bgTransparent: "Прозрачный",
bgColor: "Цвет",
bgGradient: "Градиент",
bgBlur: "Размытие",
bgImage: "Изображение",
gradientStart: "Начало",
gradientEnd: "Конец",
gradientAngle: "Угол ({deg}°)",
blurStrength: "Сила размытия ({value})",
shadow: "Добавить тень",
shadowStrength: "Непрозрачность тени ({value})",
advanced: "Дополнительно",
edgeRefine: "Уточнение краёв (уровень {level})",
edgeRefineOff: "Уточнение краёв: выкл.",
decontaminate: "Убрать цветовой ореол",
uploadBg: "Загрузить фоновое изображение",
frameNote: "Обрабатывает каждый кадр, поэтому длинные анимации медленные. Рекомендуется GPU.",
submit: "Удалить фон",
submitBatch: "Удалить фон ({count} файлов)",
progressLabel: "Удаление фона с кадров",
download: "Скачать",
},
upscale: {
scaleFactor: "Коэффициент масштабирования",
quality: "Качество",
+37
View File
@@ -1514,6 +1514,43 @@ export const sv: TranslationKeys = {
submitBatch: "Ta bort bakgrund ({count} filer)",
progressLabel: "Tar bort bakgrund",
},
"remove-gif-background": {
quality: "Kvalitet",
qualityFast: "Snabb",
qualityBalanced: "Balanserad",
qualityBest: "Bäst",
qualityNote:
"Varje bildruta körs genom modellen, så högre kvalitet är mycket långsammare på långa klipp.",
outputFormat: "Utdataformat",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP och APNG behåller mjuk, full transparens.",
gifCaveat: "GIF stöder bara 1-bitars transparens, så kanterna ser hårda ut.",
background: "Bakgrund",
bgTransparent: "Transparent",
bgColor: "Färg",
bgGradient: "Tonad",
bgBlur: "Oskärpa",
bgImage: "Bild",
gradientStart: "Start",
gradientEnd: "Slut",
gradientAngle: "Vinkel ({deg}°)",
blurStrength: "Oskärpans styrka ({value})",
shadow: "Lägg till skugga",
shadowStrength: "Skuggans opacitet ({value})",
advanced: "Avancerat",
edgeRefine: "Kantförfining (nivå {level})",
edgeRefineOff: "Kantförfining: av",
decontaminate: "Ta bort färgspill",
uploadBg: "Ladda upp bakgrundsbild",
frameNote:
"Bearbetar varje bildruta, så långa animationer är långsamma. En GPU rekommenderas.",
submit: "Ta bort bakgrund",
submitBatch: "Ta bort bakgrund ({count} filer)",
progressLabel: "Tar bort bakgrund från bildrutor",
download: "Ladda ner",
},
upscale: {
scaleFactor: "Skalningsfaktor",
quality: "Kvalitet",
+35
View File
@@ -1497,6 +1497,41 @@ export const th: TranslationKeys = {
submitBatch: "ลบพื้นหลัง ({count} ไฟล์)",
progressLabel: "กำลังลบพื้นหลัง",
},
"remove-gif-background": {
quality: "คุณภาพ",
qualityFast: "เร็ว",
qualityBalanced: "สมดุล",
qualityBest: "ดีที่สุด",
qualityNote: "ทุกเฟรมจะผ่านการประมวลผลด้วยโมเดล ดังนั้นคุณภาพที่สูงขึ้นจะช้ากว่ามากในคลิปยาว",
outputFormat: "รูปแบบเอาต์พุต",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP และ APNG คงความโปร่งใสเต็มรูปแบบและเนียนตา",
gifCaveat: "GIF รองรับความโปร่งใสแบบ 1 บิตเท่านั้น ขอบจึงดูแข็ง",
background: "พื้นหลัง",
bgTransparent: "โปร่งใส",
bgColor: "สี",
bgGradient: "ไล่สี",
bgBlur: "เบลอ",
bgImage: "ภาพ",
gradientStart: "เริ่มต้น",
gradientEnd: "สิ้นสุด",
gradientAngle: "มุม ({deg}°)",
blurStrength: "ความเข้มของการเบลอ ({value})",
shadow: "เพิ่มเงา",
shadowStrength: "ความทึบของเงา ({value})",
advanced: "ขั้นสูง",
edgeRefine: "ปรับขอบให้ละเอียด (ระดับ {level})",
edgeRefineOff: "ปรับขอบให้ละเอียด: ปิด",
decontaminate: "กำจัดสีขอบ",
uploadBg: "อัปโหลดภาพพื้นหลัง",
frameNote: "ประมวลผลทุกเฟรม แอนิเมชันยาวจึงช้า แนะนำให้ใช้ GPU",
submit: "ลบพื้นหลัง",
submitBatch: "ลบพื้นหลัง ({count} ไฟล์)",
progressLabel: "กำลังลบพื้นหลังจากเฟรม",
download: "ดาวน์โหลด",
},
upscale: {
scaleFactor: "ตัวคูณขยาย",
quality: "คุณภาพ",
+36
View File
@@ -1518,6 +1518,42 @@ export const tr: TranslationKeys = {
submitBatch: "Arka Planı Kaldır ({count} dosya)",
progressLabel: "Arka plan kaldırılıyor",
},
"remove-gif-background": {
quality: "Kalite",
qualityFast: "Hızlı",
qualityBalanced: "Dengeli",
qualityBest: "En iyi",
qualityNote:
"Her kare modelden geçer, bu yüzden yüksek kalite uzun kliplerde çok daha yavaştır.",
outputFormat: "Çıktı Formatı",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP ve APNG, pürüzsüz ve tam saydamlığı korur.",
gifCaveat: "GIF yalnızca 1 bit saydamlığı destekler, bu yüzden kenarlar sert görünür.",
background: "Arka Plan",
bgTransparent: "Saydam",
bgColor: "Renk",
bgGradient: "Gradyan",
bgBlur: "Bulanıklık",
bgImage: "Görüntü",
gradientStart: "Başlangıç",
gradientEnd: "Bitiş",
gradientAngle: "Açı ({deg}°)",
blurStrength: "Bulanıklık gücü ({value})",
shadow: "Gölge Ekle",
shadowStrength: "Gölge opaklığı ({value})",
advanced: "Gelişmiş",
edgeRefine: "Kenar iyileştirme (seviye {level})",
edgeRefineOff: "Kenar iyileştirme: kapalı",
decontaminate: "Renk taşmasını kaldır",
uploadBg: "Arka plan görüntüsü yükle",
frameNote: "Her kareyi işler, bu yüzden uzun animasyonlar yavaştır. GPU önerilir.",
submit: "Arka Planı Kaldır",
submitBatch: "Arka Planı Kaldır ({count} dosya)",
progressLabel: "Karelerden arka plan kaldırılıyor",
download: "İndir",
},
upscale: {
scaleFactor: "Ölçek Faktörü",
quality: "Kalite",
+36
View File
@@ -1518,6 +1518,42 @@ export const uk: TranslationKeys = {
submitBatch: "Видалити фон ({count} файлів)",
progressLabel: "Видалення фону",
},
"remove-gif-background": {
quality: "Якість",
qualityFast: "Швидко",
qualityBalanced: "Збалансовано",
qualityBest: "Найкраще",
qualityNote:
"Кожен кадр проходить через модель, тож вища якість значно повільніша на довгих кліпах.",
outputFormat: "Формат виводу",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP і APNG зберігають плавну, повну прозорість.",
gifCaveat: "GIF підтримує лише 1-бітну прозорість, тому краї виглядають різкими.",
background: "Фон",
bgTransparent: "Прозорий",
bgColor: "Колір",
bgGradient: "Градієнт",
bgBlur: "Розмиття",
bgImage: "Зображення",
gradientStart: "Початок",
gradientEnd: "Кінець",
gradientAngle: "Кут ({deg}°)",
blurStrength: "Сила розмиття ({value})",
shadow: "Додати тінь",
shadowStrength: "Непрозорість тіні ({value})",
advanced: "Розширені",
edgeRefine: "Уточнення країв (рівень {level})",
edgeRefineOff: "Уточнення країв: вимкнено",
decontaminate: "Прибрати перетікання кольору",
uploadBg: "Завантажити фонове зображення",
frameNote: "Обробляє кожен кадр, тож довгі анімації повільні. Рекомендується GPU.",
submit: "Видалити фон",
submitBatch: "Видалити фон ({count} файлів)",
progressLabel: "Видалення фону з кадрів",
download: "Завантажити",
},
upscale: {
scaleFactor: "Коефіцієнт масштабування",
quality: "Якість",
+36
View File
@@ -1518,6 +1518,42 @@ export const vi: TranslationKeys = {
submitBatch: "Xóa nền ({count} tệp)",
progressLabel: "Đang xóa nền",
},
"remove-gif-background": {
quality: "Chất lượng",
qualityFast: "Nhanh",
qualityBalanced: "Cân bằng",
qualityBest: "Tốt nhất",
qualityNote:
"Mọi khung hình đều chạy qua mô hình, nên chất lượng cao hơn sẽ chậm hơn nhiều với các clip dài.",
outputFormat: "Định dạng đầu ra",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP và APNG giữ được độ trong suốt đầy đủ, mượt mà.",
gifCaveat: "GIF chỉ hỗ trợ độ trong suốt 1-bit, nên viền trông sắc cứng.",
background: "Nền",
bgTransparent: "Trong suốt",
bgColor: "Màu nền",
bgGradient: "Chuyển sắc",
bgBlur: "Làm mờ",
bgImage: "Hình ảnh",
gradientStart: "Bắt đầu",
gradientEnd: "Kết thúc",
gradientAngle: "Góc ({deg}°)",
blurStrength: "Cường độ làm mờ ({value})",
shadow: "Thêm bóng đổ",
shadowStrength: "Độ mờ của bóng ({value})",
advanced: "Nâng cao",
edgeRefine: "Tinh chỉnh viền (mức {level})",
edgeRefineOff: "Tinh chỉnh viền: tắt",
decontaminate: "Khử màu tràn viền",
uploadBg: "Tải lên ảnh nền",
frameNote: "Xử lý mọi khung hình, nên ảnh động dài sẽ chậm. Khuyến nghị dùng GPU.",
submit: "Xóa nền",
submitBatch: "Xóa nền ({count} tệp)",
progressLabel: "Đang xóa nền khỏi các khung hình",
download: "Tải xuống",
},
upscale: {
scaleFactor: "Hệ số phóng đại",
quality: "Chất lượng",
+35
View File
@@ -1285,6 +1285,41 @@ export const zhCN: TranslationKeys = {
submitBatch: "移除背景({count} 个文件)",
progressLabel: "正在移除背景",
},
"remove-gif-background": {
quality: "质量",
qualityFast: "快速",
qualityBalanced: "均衡",
qualityBest: "最佳",
qualityNote: "每一帧都会经过模型处理,因此质量越高,处理长片段就越慢。",
outputFormat: "输出格式",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP 和 APNG 可保留平滑、完整的透明度。",
gifCaveat: "GIF 仅支持 1 位透明度,因此边缘看起来生硬。",
background: "背景",
bgTransparent: "透明",
bgColor: "颜色",
bgGradient: "渐变",
bgBlur: "模糊",
bgImage: "图片",
gradientStart: "起点",
gradientEnd: "终点",
gradientAngle: "角度({deg}°)",
blurStrength: "模糊强度({value}",
shadow: "添加阴影",
shadowStrength: "阴影不透明度({value}",
advanced: "高级",
edgeRefine: "边缘细化(级别 {level}",
edgeRefineOff: "边缘细化:关闭",
decontaminate: "去除颜色溢出",
uploadBg: "上传背景图片",
frameNote: "会处理每一帧,因此长动画较慢。建议使用 GPU。",
submit: "移除背景",
submitBatch: "移除背景({count} 个文件)",
progressLabel: "正在从帧中移除背景",
download: "下载",
},
upscale: {
scaleFactor: "放大倍数",
quality: "质量",
+35
View File
@@ -1285,6 +1285,41 @@ export const zhTW: TranslationKeys = {
submitBatch: "移除背景({count}個檔案)",
progressLabel: "正在移除背景",
},
"remove-gif-background": {
quality: "品質",
qualityFast: "快速",
qualityBalanced: "平衡",
qualityBest: "最佳",
qualityNote: "每一格都會經過模型處理,因此品質越高,處理長片段就越慢。",
outputFormat: "輸出格式",
formatWebp: "WebP",
formatApng: "APNG",
formatGif: "GIF",
formatWebpHint: "WebP 和 APNG 可保留平滑、完整的透明度。",
gifCaveat: "GIF 僅支援 1 位元透明度,因此邊緣看起來生硬。",
background: "背景",
bgTransparent: "透明",
bgColor: "色彩",
bgGradient: "漸層",
bgBlur: "模糊",
bgImage: "影像",
gradientStart: "起點",
gradientEnd: "終點",
gradientAngle: "角度({deg}°)",
blurStrength: "模糊強度({value}",
shadow: "加入陰影",
shadowStrength: "陰影不透明度({value}",
advanced: "進階",
edgeRefine: "邊緣細化(等級 {level}",
edgeRefineOff: "邊緣細化:關閉",
decontaminate: "移除色彩溢出",
uploadBg: "上傳背景影像",
frameNote: "會處理每一格,因此長動畫較慢。建議使用 GPU。",
submit: "移除背景",
submitBatch: "移除背景({count}個檔案)",
progressLabel: "正在從影格中移除背景",
download: "下載",
},
upscale: {
scaleFactor: "放大倍數",
quality: "品質",