@jjlmoya/utils-audiovisual 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/src/category/i18n/de.ts +198 -0
- package/src/category/i18n/id.ts +198 -0
- package/src/category/i18n/it.ts +198 -0
- package/src/category/i18n/ja.ts +198 -0
- package/src/category/i18n/ko.ts +198 -0
- package/src/category/i18n/nl.ts +198 -0
- package/src/category/i18n/pl.ts +198 -0
- package/src/category/i18n/pt.ts +198 -0
- package/src/category/i18n/ru.ts +198 -0
- package/src/category/i18n/sv.ts +198 -0
- package/src/category/i18n/tr.ts +198 -0
- package/src/category/i18n/zh.ts +198 -0
- package/src/category/index.ts +31 -3
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tool/chromaticLens/i18n/de.ts +246 -0
- package/src/tool/chromaticLens/i18n/id.ts +246 -0
- package/src/tool/chromaticLens/i18n/it.ts +246 -0
- package/src/tool/chromaticLens/i18n/ja.ts +246 -0
- package/src/tool/chromaticLens/i18n/ko.ts +246 -0
- package/src/tool/chromaticLens/i18n/nl.ts +246 -0
- package/src/tool/chromaticLens/i18n/pl.ts +246 -0
- package/src/tool/chromaticLens/i18n/pt.ts +246 -0
- package/src/tool/chromaticLens/i18n/ru.ts +246 -0
- package/src/tool/chromaticLens/i18n/sv.ts +246 -0
- package/src/tool/chromaticLens/i18n/tr.ts +246 -0
- package/src/tool/chromaticLens/i18n/zh.ts +246 -0
- package/src/tool/chromaticLens/index.ts +15 -7
- package/src/tool/collageMaker/i18n/de.ts +233 -0
- package/src/tool/collageMaker/i18n/id.ts +233 -0
- package/src/tool/collageMaker/i18n/it.ts +233 -0
- package/src/tool/collageMaker/i18n/ja.ts +233 -0
- package/src/tool/collageMaker/i18n/ko.ts +233 -0
- package/src/tool/collageMaker/i18n/nl.ts +233 -0
- package/src/tool/collageMaker/i18n/pl.ts +233 -0
- package/src/tool/collageMaker/i18n/pt.ts +233 -0
- package/src/tool/collageMaker/i18n/ru.ts +233 -0
- package/src/tool/collageMaker/i18n/sv.ts +233 -0
- package/src/tool/collageMaker/i18n/tr.ts +233 -0
- package/src/tool/collageMaker/i18n/zh.ts +233 -0
- package/src/tool/collageMaker/index.ts +15 -6
- package/src/tool/exifCleaner/i18n/de.ts +277 -0
- package/src/tool/exifCleaner/i18n/fr.ts +1 -1
- package/src/tool/exifCleaner/i18n/id.ts +277 -0
- package/src/tool/exifCleaner/i18n/it.ts +277 -0
- package/src/tool/exifCleaner/i18n/ja.ts +277 -0
- package/src/tool/exifCleaner/i18n/ko.ts +277 -0
- package/src/tool/exifCleaner/i18n/nl.ts +277 -0
- package/src/tool/exifCleaner/i18n/pl.ts +277 -0
- package/src/tool/exifCleaner/i18n/pt.ts +277 -0
- package/src/tool/exifCleaner/i18n/ru.ts +277 -0
- package/src/tool/exifCleaner/i18n/sv.ts +277 -0
- package/src/tool/exifCleaner/i18n/tr.ts +277 -0
- package/src/tool/exifCleaner/i18n/zh.ts +277 -0
- package/src/tool/exifCleaner/index.ts +16 -8
- package/src/tool/imageCompressor/i18n/de.ts +242 -0
- package/src/tool/imageCompressor/i18n/en.ts +1 -1
- package/src/tool/imageCompressor/i18n/es.ts +1 -1
- package/src/tool/imageCompressor/i18n/id.ts +242 -0
- package/src/tool/imageCompressor/i18n/it.ts +242 -0
- package/src/tool/imageCompressor/i18n/ja.ts +242 -0
- package/src/tool/imageCompressor/i18n/ko.ts +242 -0
- package/src/tool/imageCompressor/i18n/nl.ts +242 -0
- package/src/tool/imageCompressor/i18n/pl.ts +242 -0
- package/src/tool/imageCompressor/i18n/pt.ts +242 -0
- package/src/tool/imageCompressor/i18n/ru.ts +242 -0
- package/src/tool/imageCompressor/i18n/sv.ts +242 -0
- package/src/tool/imageCompressor/i18n/tr.ts +242 -0
- package/src/tool/imageCompressor/i18n/zh.ts +244 -0
- package/src/tool/imageCompressor/index.ts +15 -7
- package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/fr.ts +1 -1
- package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
- package/src/tool/printQualityCalculator/index.ts +15 -7
- package/src/tool/privacyBlur/i18n/de.ts +238 -0
- package/src/tool/privacyBlur/i18n/id.ts +238 -0
- package/src/tool/privacyBlur/i18n/it.ts +238 -0
- package/src/tool/privacyBlur/i18n/ja.ts +238 -0
- package/src/tool/privacyBlur/i18n/ko.ts +238 -0
- package/src/tool/privacyBlur/i18n/nl.ts +238 -0
- package/src/tool/privacyBlur/i18n/pl.ts +238 -0
- package/src/tool/privacyBlur/i18n/pt.ts +238 -0
- package/src/tool/privacyBlur/i18n/ru.ts +238 -0
- package/src/tool/privacyBlur/i18n/sv.ts +238 -0
- package/src/tool/privacyBlur/i18n/tr.ts +238 -0
- package/src/tool/privacyBlur/i18n/zh.ts +238 -0
- package/src/tool/privacyBlur/index.ts +15 -7
- package/src/tool/subtitleSync/i18n/de.ts +241 -0
- package/src/tool/subtitleSync/i18n/fr.ts +5 -5
- package/src/tool/subtitleSync/i18n/id.ts +241 -0
- package/src/tool/subtitleSync/i18n/it.ts +241 -0
- package/src/tool/subtitleSync/i18n/ja.ts +241 -0
- package/src/tool/subtitleSync/i18n/ko.ts +241 -0
- package/src/tool/subtitleSync/i18n/nl.ts +241 -0
- package/src/tool/subtitleSync/i18n/pl.ts +241 -0
- package/src/tool/subtitleSync/i18n/pt.ts +241 -0
- package/src/tool/subtitleSync/i18n/ru.ts +241 -0
- package/src/tool/subtitleSync/i18n/sv.ts +241 -0
- package/src/tool/subtitleSync/i18n/tr.ts +241 -0
- package/src/tool/subtitleSync/i18n/zh.ts +241 -0
- package/src/tool/subtitleSync/index.ts +15 -7
- package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
- package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
- package/src/tool/timelapseCalculator/index.ts +16 -8
- package/src/tool/tvDistance/i18n/de.ts +223 -0
- package/src/tool/tvDistance/i18n/id.ts +223 -0
- package/src/tool/tvDistance/i18n/it.ts +223 -0
- package/src/tool/tvDistance/i18n/ja.ts +223 -0
- package/src/tool/tvDistance/i18n/ko.ts +223 -0
- package/src/tool/tvDistance/i18n/nl.ts +223 -0
- package/src/tool/tvDistance/i18n/pl.ts +223 -0
- package/src/tool/tvDistance/i18n/pt.ts +223 -0
- package/src/tool/tvDistance/i18n/ru.ts +223 -0
- package/src/tool/tvDistance/i18n/sv.ts +223 -0
- package/src/tool/tvDistance/i18n/tr.ts +223 -0
- package/src/tool/tvDistance/i18n/zh.ts +223 -0
- package/src/tool/tvDistance/index.ts +15 -7
- package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
- package/src/tool/videoFrameExtractor/index.ts +16 -8
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { PrivacyBlurUI, PrivacyBlurLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'online-privacy-editor-pixelate-blur-faces-photos';
|
|
5
|
+
const title = 'Edytor Prywatności Online: Pikselowanie i ukrywanie twarzy na zdjęciach';
|
|
6
|
+
const description = 'Chroń swoją tożsamość, cenzurując wrażliwe obszary swoich zdjęć. Pikseluj twarze, rozmywaj dokumenty lub zakrywaj prywatne informacje w 100% lokalnie.';
|
|
7
|
+
|
|
8
|
+
const ui: PrivacyBlurUI = {
|
|
9
|
+
toolPixel: "Pikseluj",
|
|
10
|
+
toolBlur: "Rozmyj",
|
|
11
|
+
toolSolid: "Zakryj",
|
|
12
|
+
intensityLabel: "Intensywność",
|
|
13
|
+
undoButton: "Cofnij",
|
|
14
|
+
downloadButton: "Zapisz",
|
|
15
|
+
dropTitle: "Edytor Prywatności",
|
|
16
|
+
dropSubtitle: "Przeciągnij obraz tutaj lub kliknij, aby rozpocząć",
|
|
17
|
+
privacySecureLabel: "100% Lokalnie",
|
|
18
|
+
offlineLabel: "Offline",
|
|
19
|
+
autoDetectFaces: "Auto Wykrywanie",
|
|
20
|
+
loadingModels: "Ładowanie modeli...",
|
|
21
|
+
noFacesDetected: "Nie wykryto twarzy automatycznie.",
|
|
22
|
+
faqTitle: "Często Zadawane Pytania",
|
|
23
|
+
bibliographyTitle: "Referencje"
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const faq: PrivacyBlurLocaleContent['faq'] = [
|
|
27
|
+
{
|
|
28
|
+
question: "Czy moje zdjęcia są przesyłane na jakikolwiek serwer?",
|
|
29
|
+
answer: "Nie. Edytor prywatności działa całkowicie w Twojej przeglądarce. Piksele są modyfikowane lokalnie i nic nie jest wysyłane poza Twoje urządzenie.",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
question: "Jak działa automatyczne wykrywanie twarzy?",
|
|
33
|
+
answer: "Używamy lekkiej sieci neuronowej (TinyFaceDetector), która działa w Twojej przeglądarce, aby identyfikować cechy twarzy bez potrzeby połączenia zewnętrznego.",
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
const howTo: PrivacyBlurLocaleContent['howTo'] = [
|
|
38
|
+
{
|
|
39
|
+
name: "Prześlij zdjęcie",
|
|
40
|
+
text: "Przeciągnij lub wybierz obraz zawierający wrażliwe informacje, które chcesz ukryć.",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "Wybierz narzędzie",
|
|
44
|
+
text: "Wybierz między pikselowaniem, rozmyciem a pełnym zakryciem, w zależności od potrzebnego poziomu prywatności.",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "Zaznacz obszar",
|
|
48
|
+
text: "Kliknij i przeciągnij nad strefą, którą chcesz chronić (twarze, tablice rejestracyjne, nazwiska itp.).",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: "Zapisz wynik",
|
|
52
|
+
text: "Pobierz przetworzony obraz z pewnością, że oryginalne dane są niedostępne.",
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
const bibliography: PrivacyBlurLocaleContent['bibliography'] = [
|
|
57
|
+
{
|
|
58
|
+
name: "Privacy by Design (PbD) - AGPD",
|
|
59
|
+
url: "https://www.aepd.es/es/guias-y-herramientas/guias/guia-de-privacidad-desde-el-diseno",
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
const seo: PrivacyBlurLocaleContent['seo'] = [
|
|
64
|
+
{
|
|
65
|
+
type: 'summary',
|
|
66
|
+
title: 'Edytor Prywatności: Pikseluj, Rozmywaj i Ukrywaj',
|
|
67
|
+
items: [
|
|
68
|
+
'Trzy narzędzia edycji: Pikselowanie, Rozmycie, Pełne Zakrycie',
|
|
69
|
+
'Automatyczne wykrywanie twarzy za pomocą AI (TinyFaceDetector)',
|
|
70
|
+
'Przetwarzanie w 100% lokalne - Twoje zdjęcia nigdy nie opuszczają przeglądarki',
|
|
71
|
+
'Brak znaków wodnych, brak limitów, całkowicie za darmo'
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{ type: 'title', text: 'Prywatność Cyfrowa: Jak Chronić Dane Wizualne', level: 2 },
|
|
75
|
+
{ type: 'paragraph', html: 'W dobie mediów społecznościowych udostępnianie zdjęć bez kontroli może narazić wrażliwe dane osobowe. Nasze narzędzie pozwala ukryć krytyczne informacje (twarze, tablice rejestracyjne, nazwiska, adresy) przed przesłaniem ich do Internetu, zapewniając, że Twoja prywatność pozostaje pod pełną kontrolą.' },
|
|
76
|
+
|
|
77
|
+
{ type: 'stats', items: [
|
|
78
|
+
{ value: '3', label: 'Metody ukrywania', icon: 'mdi:tools' },
|
|
79
|
+
{ value: '100%', label: 'Prywatność lokalna', icon: 'mdi:shield-check' },
|
|
80
|
+
{ value: 'AI', label: 'Wykrywanie twarzy', icon: 'mdi:brain' }
|
|
81
|
+
], columns: 3 },
|
|
82
|
+
|
|
83
|
+
{ type: 'title', text: 'Objaśnienie trzech metod ukrywania', level: 3 },
|
|
84
|
+
{ type: 'comparative', items: [
|
|
85
|
+
{
|
|
86
|
+
title: 'Pikselowanie',
|
|
87
|
+
description: 'Dzieli obszar na kwadraty, niemożliwe do rozpoznania',
|
|
88
|
+
icon: 'mdi:blur',
|
|
89
|
+
points: [
|
|
90
|
+
'Maksymalne nieodwracalne zaciemnienie',
|
|
91
|
+
'Bezpieczniejsze przed rozpoznawaniem twarzy',
|
|
92
|
+
'Widoczne, jasne jest, że coś zostało ukryte',
|
|
93
|
+
'Idealne: twarze na publicznych zdjęciach'
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
title: 'Rozmycie (Blur)',
|
|
98
|
+
description: 'Wygładzanie gaussowskie - bardziej naturalny wygląd',
|
|
99
|
+
icon: 'mdi:blur-off',
|
|
100
|
+
points: [
|
|
101
|
+
'Bardziej elegancki wygląd wizualny',
|
|
102
|
+
'Zachowuje pewną spójność tonacji',
|
|
103
|
+
'Matematycznie odwracalne (teoretycznie)',
|
|
104
|
+
'Idealne: mniej wrażliwe informacje'
|
|
105
|
+
],
|
|
106
|
+
highlight: true
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Zakrycie (Solid)',
|
|
110
|
+
description: 'Nieprzezroczysty blok koloru - maksymalna prywatność',
|
|
111
|
+
icon: 'mdi:rectangle',
|
|
112
|
+
points: [
|
|
113
|
+
'Widoczne, oczywiste ukrycie',
|
|
114
|
+
'Maksymalne bezpieczeństwo prawne/prywatność',
|
|
115
|
+
'Zmienia kompozycję wizualną',
|
|
116
|
+
'Idealne: dokumenty, dane wrażliwe'
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
], columns: 3 },
|
|
120
|
+
|
|
121
|
+
{ type: 'title', text: 'Automatyczne wykrywanie twarzy za pomocą AI', level: 3 },
|
|
122
|
+
{ type: 'paragraph', html: 'Nasze narzędzie wykorzystuje TinyFaceDetector, kompaktową sieć neuronową, która działa bezpośrednio w przeglądarce, aby automatycznie identyfikować twarze:' },
|
|
123
|
+
{ type: 'list', items: [
|
|
124
|
+
'<strong>100% Lokalnie:</strong> Model AI działa na Twoim GPU/CPU, a nie na zdalnych serwerach.',
|
|
125
|
+
'<strong>Brak Internetu:</strong> Po wstępnym pobraniu działa całkowicie offline.',
|
|
126
|
+
'<strong>Prywatność Gwarantowana:</strong> Nikt nie widzi twarzy: ani Google, ani OpenAI, ani my.',
|
|
127
|
+
'<strong>Automatyka jednym kliknięciem:</strong> Wykrywa twarze i pozwala ukryć je jednym kliknięciem.'
|
|
128
|
+
], icon: 'mdi:check' },
|
|
129
|
+
|
|
130
|
+
{ type: 'card', title: 'Privacy by Design', html: 'Przetwarzając obrazy przy użyciu lokalnego GPU i CPU Twojej przeglądarki, gwarantujemy, że oryginalne zdjęcia nigdy nie opuszczają Twojego urządzenia. Nawet jeśli zmienisz zdanie, nic nie zostało przesłane. To najwyższy standard prywatności cyfrowej.' },
|
|
131
|
+
|
|
132
|
+
{ type: 'title', text: 'Przypadki użycia prywatności', level: 3 },
|
|
133
|
+
{ type: 'table', headers: ['Informacje wrażliwe', 'Zalecana metoda', 'Pilność'], rows: [
|
|
134
|
+
['Twarze osób', 'Pikselowanie lub Rozmycie', 'Krytyczna'],
|
|
135
|
+
['Tablice rejestracyjne', 'Pikselowanie (nieodwracalne)', 'Krytyczna'],
|
|
136
|
+
['Dokumenty tożsamości', 'Zakrycie lub Pikselowanie', 'Krytyczna'],
|
|
137
|
+
['Pisane nazwiska/adresy', 'Zakrycie lub Pikselowanie', 'Wysoka'],
|
|
138
|
+
['Numery telefonów', 'Pikselowanie lub Zakrycie', 'Wysoka'],
|
|
139
|
+
['Informacje medyczne', 'Zakrycie', 'Krytyczna'],
|
|
140
|
+
['Widoczne sygnały WiFi', 'Pikselowanie', 'Średnia']
|
|
141
|
+
] },
|
|
142
|
+
|
|
143
|
+
{ type: 'proscons', items: [
|
|
144
|
+
{
|
|
145
|
+
pro: 'Całkowita prywatność: przetwarzanie w 100% lokalne, brak serwerów, brak przechowywania',
|
|
146
|
+
con: 'Wymaga nowoczesnej przeglądarki z obsługą Canvas i WebGL'
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
pro: 'Automatyczne wykrywanie twarzy oszczędza czas manualny',
|
|
150
|
+
con: 'AI nie jest idealna - twarze z profilu lub częściowe mogą nie zostać wykryte'
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
pro: 'Trzy metody pozwalają wybrać między bezpieczeństwem a estetyką',
|
|
154
|
+
con: 'Brak zaawansowanych opcji (inteligentne zniekształcenie, wypełnianie kontekstowe)'
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
pro: 'Całkowicie za darmo, bez reklam, bez limitów',
|
|
158
|
+
con: 'Nie jest odpowiednikiem profesjonalnego oprogramowania jak Photoshop'
|
|
159
|
+
}
|
|
160
|
+
], proTitle: 'Zalety', conTitle: 'Ograniczenia' },
|
|
161
|
+
|
|
162
|
+
{ type: 'diagnostic', variant: 'warning', title: 'Ostrzeżenie: Rozmycie NIE jest w 100% bezpieczne', icon: 'mdi:alert', badge: 'Bezpieczeństwo', html: 'Rozmycie gaussowskie jest matematycznie odwracalne za pomocą zaawansowanych algorytmów odwrotnych. Jeśli informacje są KRYTYCZNE (dokumenty prawne, tożsamość), użyj <strong>Pikselowania lub Zakrycia</strong>. Rozmycie jest estetycznie lepsze, ale mniej bezpieczne.' },
|
|
163
|
+
|
|
164
|
+
{ type: 'glossary', items: [
|
|
165
|
+
{
|
|
166
|
+
term: 'Pikselowanie',
|
|
167
|
+
definition: 'Zmniejszenie rozdzielczości poprzez podział obszaru na jednolite bloki kolorów. Nieodwracalne. Maksymalne bezpieczeństwo przed rozpoznawaniem twarzy AI.'
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
term: 'Rozmycie Gaussowskie',
|
|
171
|
+
definition: 'Matematyczne wygładzanie oparte na rozkładzie normalnym. Teoretycznie odwracalne poprzez dekonwolucję, ale w praktyce bardzo trudne.'
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
term: 'Zakrycie (Solid)',
|
|
175
|
+
definition: 'Nieprzezroczysty blok jednolitego koloru. Maksymalne bezpieczeństwo, maksymalna prywatność prawna, mniej estetyczna wizualnie.'
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
term: 'TinyFaceDetector',
|
|
179
|
+
definition: 'Lekka splotowa sieć neuronowa (CNN) do wykrywania twarzy. Działa lokalnie w przeglądarce bez potrzeby zewnętrznego serwera.'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
term: 'Privacy by Design (PbD)',
|
|
183
|
+
definition: 'Podejście polegające na integrowaniu prywatności już od etapu projektowania systemu, a nie dodawaniu jej później. Nasze lokalne podejście to właśnie Privacy by Design.'
|
|
184
|
+
}
|
|
185
|
+
] },
|
|
186
|
+
|
|
187
|
+
{ type: 'message', title: 'Prywatność w Twoich rękach', ariaLabel: 'Informacje o ochronie prywatności', html: 'Nie przechowujemy ani nie przetwarzamy Twoich zdjęć na zdalnych serwerach. Brak ciasteczek śledzących. Brak historii edycji. Nie wiemy, co ukrywasz, ponieważ nigdy nie widzimy Twoich zdjęć. Pełna kontrola, pełna prywatność, pełna wolność.' },
|
|
188
|
+
|
|
189
|
+
{ type: 'title', text: 'Udostępniaj bezpiecznie w mediach społecznościowych', level: 3 },
|
|
190
|
+
{ type: 'paragraph', html: 'Przed opublikowaniem jakiegokolwiek zdjęcia w Internecie zadaj sobie pytanie: czy są tam informacje, których wolałbym nie upubliczniać? Twarze dzieci, tablice rejestracyjne, adresy, numery dokumentów. 2-minutowa sesja prywatności teraz pozwala uniknąć problemów na lata.' }
|
|
191
|
+
];
|
|
192
|
+
|
|
193
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
194
|
+
'@context': 'https://schema.org',
|
|
195
|
+
'@type': 'FAQPage',
|
|
196
|
+
mainEntity: faq.map((item) => ({
|
|
197
|
+
'@type': 'Question',
|
|
198
|
+
name: item.question,
|
|
199
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
200
|
+
})),
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
const howToSchema: WithContext<HowTo> = {
|
|
204
|
+
'@context': 'https://schema.org',
|
|
205
|
+
'@type': 'HowTo',
|
|
206
|
+
name: title,
|
|
207
|
+
description,
|
|
208
|
+
step: howTo.map((step) => ({
|
|
209
|
+
'@type': 'HowToStep',
|
|
210
|
+
name: step.name,
|
|
211
|
+
text: step.text,
|
|
212
|
+
})),
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
216
|
+
'@context': 'https://schema.org',
|
|
217
|
+
'@type': 'SoftwareApplication',
|
|
218
|
+
name: title,
|
|
219
|
+
description,
|
|
220
|
+
applicationCategory: 'UtilitiesApplication',
|
|
221
|
+
operatingSystem: 'Web',
|
|
222
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
223
|
+
inLanguage: 'pl',
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
export const content: PrivacyBlurLocaleContent = {
|
|
227
|
+
slug,
|
|
228
|
+
title,
|
|
229
|
+
description,
|
|
230
|
+
ui,
|
|
231
|
+
seo,
|
|
232
|
+
faqTitle: "Często Zadawane Pytania",
|
|
233
|
+
faq,
|
|
234
|
+
bibliographyTitle: "Referencje",
|
|
235
|
+
bibliography,
|
|
236
|
+
howTo,
|
|
237
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
238
|
+
};
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { PrivacyBlurUI, PrivacyBlurLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'editor-privacidade-online-pixelizar-desfocar-rostos-fotos';
|
|
5
|
+
const title = 'Editor de Privacidade Online: Pixelize e esconda rostos em fotos';
|
|
6
|
+
const description = 'Proteja a sua identidade censurando áreas sensíveis das suas fotos. Pixelize rostos, desfoque documentos ou cubra informações privadas 100% localmente.';
|
|
7
|
+
|
|
8
|
+
const ui: PrivacyBlurUI = {
|
|
9
|
+
toolPixel: "Pixelizar",
|
|
10
|
+
toolBlur: "Desfocar",
|
|
11
|
+
toolSolid: "Sólido",
|
|
12
|
+
intensityLabel: "Intensidade",
|
|
13
|
+
undoButton: "Desfazer",
|
|
14
|
+
downloadButton: "Guardar",
|
|
15
|
+
dropTitle: "Editor de Privacidade",
|
|
16
|
+
dropSubtitle: "Arraste a sua imagem aqui ou clique para começar",
|
|
17
|
+
privacySecureLabel: "100% Local",
|
|
18
|
+
offlineLabel: "Offline",
|
|
19
|
+
autoDetectFaces: "Auto Detetar",
|
|
20
|
+
loadingModels: "A carregar modelos...",
|
|
21
|
+
noFacesDetected: "Nenhum rosto detetado automaticamente.",
|
|
22
|
+
faqTitle: "Perguntas Frequentes",
|
|
23
|
+
bibliographyTitle: "Referências"
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const faq: PrivacyBlurLocaleContent['faq'] = [
|
|
27
|
+
{
|
|
28
|
+
question: "As minhas fotos são enviadas para algum servidor?",
|
|
29
|
+
answer: "Não. O editor de privacidade funciona inteiramente no seu navegador. Os píxeis são modificados localmente e nada é enviado para fora do seu dispositivo.",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
question: "Como funciona a deteção automática de rostos?",
|
|
33
|
+
answer: "Utilizamos uma rede neuronal leve (TinyFaceDetector) que corre no seu navegador para identificar características faciais sem necessidade de uma ligação externa.",
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
const howTo: PrivacyBlurLocaleContent['howTo'] = [
|
|
38
|
+
{
|
|
39
|
+
name: "Carregue a sua foto",
|
|
40
|
+
text: "Arraste ou selecione a imagem que contém informações sensíveis que deseja ocultar.",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "Escolha a ferramenta",
|
|
44
|
+
text: "Selecione entre pixelizar, desfocar ou cobertura sólida dependendo do nível de privacidade de que necessita.",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "Marque a área",
|
|
48
|
+
text: "Clique e arraste sobre a zona que deseja proteger (rostos, matrículas, nomes, etc.).",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: "Guarde o resultado",
|
|
52
|
+
text: "Descarregue a imagem processada com a segurança de que os dados originais estão inacessíveis.",
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
const bibliography: PrivacyBlurLocaleContent['bibliography'] = [
|
|
57
|
+
{
|
|
58
|
+
name: "Privacy by Design (PbD) - AGPD",
|
|
59
|
+
url: "https://www.aepd.es/es/guias-y-herramientas/guias/guia-de-privacidad-desde-el-diseno",
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
const seo: PrivacyBlurLocaleContent['seo'] = [
|
|
64
|
+
{
|
|
65
|
+
type: 'summary',
|
|
66
|
+
title: 'Editor de Privacidade: Pixelizar, Desfocar e Ocultar',
|
|
67
|
+
items: [
|
|
68
|
+
'Três ferramentas de edição: Pixelizar, Desfocar, Cobertura Sólida',
|
|
69
|
+
'Deteção automática de rostos com IA (TinyFaceDetector)',
|
|
70
|
+
'Processamento 100% local - as suas fotos nunca saem do navegador',
|
|
71
|
+
'Sem marcas de água, sem limites, completamente gratuito'
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{ type: 'title', text: 'Privacidade Digital: Como Proteger os Seus Dados Visuais', level: 2 },
|
|
75
|
+
{ type: 'paragraph', html: 'Na era das redes sociais, partilhar fotos sem controlo pode expor dados pessoais sensíveis. A nossa ferramenta permite-lhe ocultar informações críticas (rostos, matrículas, nomes, moradas) antes de as carregar para a Internet, garantindo que a sua privacidade permanece sob o seu total controlo.' },
|
|
76
|
+
|
|
77
|
+
{ type: 'stats', items: [
|
|
78
|
+
{ value: '3', label: 'Métodos de Ocultação', icon: 'mdi:tools' },
|
|
79
|
+
{ value: '100%', label: 'Privacidade Local', icon: 'mdi:shield-check' },
|
|
80
|
+
{ value: 'IA', label: 'Deteção de Rostos', icon: 'mdi:brain' }
|
|
81
|
+
], columns: 3 },
|
|
82
|
+
|
|
83
|
+
{ type: 'title', text: 'Os Três Métodos de Ocultação Explicados', level: 3 },
|
|
84
|
+
{ type: 'comparative', items: [
|
|
85
|
+
{
|
|
86
|
+
title: 'Pixelizar',
|
|
87
|
+
description: 'Divide a área em quadrados, impossível de reconhecer',
|
|
88
|
+
icon: 'mdi:blur',
|
|
89
|
+
points: [
|
|
90
|
+
'Máxima ofuscação irreversível',
|
|
91
|
+
'Mais seguro contra reconhecimento facial',
|
|
92
|
+
'Visível, clarifica que algo foi ocultado',
|
|
93
|
+
'Ideal: rostos em fotos públicas'
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
title: 'Desfocar (Blur)',
|
|
98
|
+
description: 'Suavização Gaussiana - aspeto mais natural',
|
|
99
|
+
icon: 'mdi:blur-off',
|
|
100
|
+
points: [
|
|
101
|
+
'Aspeto visual mais elegante',
|
|
102
|
+
'Mantém alguma coerência de tons',
|
|
103
|
+
'Matematicamente reversível (teoricamente)',
|
|
104
|
+
'Ideal: informações menos sensíveis'
|
|
105
|
+
],
|
|
106
|
+
highlight: true
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Cobertura Sólida',
|
|
110
|
+
description: 'Bloco de cor opaco - máxima privacidade',
|
|
111
|
+
icon: 'mdi:rectangle',
|
|
112
|
+
points: [
|
|
113
|
+
'Ocultação visível e óbvia',
|
|
114
|
+
'Máxima segurança legal/privacidade',
|
|
115
|
+
'Altera a composição visual',
|
|
116
|
+
'Ideal: documentos, dados sensíveis'
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
], columns: 3 },
|
|
120
|
+
|
|
121
|
+
{ type: 'title', text: 'Deteção Automática de Rostos com IA', level: 3 },
|
|
122
|
+
{ type: 'paragraph', html: 'A nossa ferramenta utiliza o TinyFaceDetector, uma rede neuronal compacta que corre diretamente no seu navegador para identificar rostos automaticamente:' },
|
|
123
|
+
{ type: 'list', items: [
|
|
124
|
+
'<strong>100% Local:</strong> O modelo de IA corre no seu GPU/CPU, não em servidores remotos.',
|
|
125
|
+
'<strong>Sem Internet:</strong> Após o descarregamento inicial, funciona completamente offline.',
|
|
126
|
+
'<strong>Privacidade Garantida:</strong> Ninguém vê os rostos: nem a Google, nem a OpenAI, nem nós.',
|
|
127
|
+
'<strong>Automático One-Click:</strong> Deteta rostos e permite-lhe escolher ocultar com um clique.'
|
|
128
|
+
], icon: 'mdi:check' },
|
|
129
|
+
|
|
130
|
+
{ type: 'card', title: 'Privacy by Design', html: 'Ao processar as imagens utilizando o GPU e CPU locais do seu navegador, garantimos que as fotos originais nunca saem do seu dispositivo. Mesmo que mude de ideias, nada foi transmitido. Este é o padrão máximo de privacidade digital.' },
|
|
131
|
+
|
|
132
|
+
{ type: 'title', text: 'Casos de Uso de Privacidade', level: 3 },
|
|
133
|
+
{ type: 'table', headers: ['Informação Sensível', 'Método Recomendado', 'Urgência'], rows: [
|
|
134
|
+
['Rostos de pessoas', 'Pixelizar ou Desfocar', 'Crítico'],
|
|
135
|
+
['Matrículas de veículos', 'Pixelizar (irreversível)', 'Crítico'],
|
|
136
|
+
['Documentos de identidade', 'Cobertura Sólida ou Pixelizar', 'Crítico'],
|
|
137
|
+
['Nomes/Moradas escritos', 'Cobertura Sólida ou Pixelizar', 'Alta'],
|
|
138
|
+
['Números de telefone', 'Pixelizar ou Cobertura', 'Alta'],
|
|
139
|
+
['Informação médica', 'Cobertura Sólida', 'Crítico'],
|
|
140
|
+
['Sinais WiFi visíveis', 'Pixelizar', 'Média']
|
|
141
|
+
] },
|
|
142
|
+
|
|
143
|
+
{ type: 'proscons', items: [
|
|
144
|
+
{
|
|
145
|
+
pro: 'Privacidade total: processamento 100% local, sem servidores, sem armazenamento',
|
|
146
|
+
con: 'Requer navegador moderno com suporte para Canvas e WebGL'
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
pro: 'Deteção automática de rostos poupa tempo manual',
|
|
150
|
+
con: 'IA não é perfeita - rostos de perfil ou parciais podem não ser detetados'
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
pro: 'Três métodos permitem escolher segurança vs estética',
|
|
154
|
+
con: 'Sem opções avançadas (smart warp, preenchimento contextual)'
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
pro: 'Completamente gratuito, sem publicidade, sem limites',
|
|
158
|
+
con: 'Não equivale a software profissional como o Photoshop'
|
|
159
|
+
}
|
|
160
|
+
], proTitle: 'Vantagens', conTitle: 'Limitações' },
|
|
161
|
+
|
|
162
|
+
{ type: 'diagnostic', variant: 'warning', title: 'Aviso: Desfocar NÃO é 100% seguro', icon: 'mdi:alert', badge: 'Segurança', html: 'O desfoque gaussiano é matematicamente reversível através de algoritmos inversos sofisticados. Se a informação for CRÍTICA (documentos legais, identidade), utilize <strong>Pixelizar ou Cobertura Sólida</strong>. O desfoque é esteticamente melhor, mas menos seguro.' },
|
|
163
|
+
|
|
164
|
+
{ type: 'glossary', items: [
|
|
165
|
+
{
|
|
166
|
+
term: 'Pixelização',
|
|
167
|
+
definition: 'Reduzir a resolução dividindo a área em blocos de cor uniforme. Irreversível. Máxima segurança contra reconhecimento facial por IA.'
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
term: 'Desfoque Gaussiano',
|
|
171
|
+
definition: 'Suavização matemática baseada na distribuição normal. Teoricamente reversível através de deconvolution, mas praticamente muito difícil.'
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
term: 'Cobertura Sólida',
|
|
175
|
+
definition: 'Bloco opaco de cor uniforme. Máxima segurança, máxima privacidade legal, menos elegante visualmente.'
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
term: 'TinyFaceDetector',
|
|
179
|
+
definition: 'Rede neuronal convolucional leve (CNN) para detetar rostos. Corre localmente no navegador sem necessidade de um servidor externo.'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
term: 'Privacy by Design (PbD)',
|
|
183
|
+
definition: 'Abordagem onde a privacidade é integrada a partir do design do sistema, não adicionada mais tarde. A nossa abordagem local é Privacy by Design.'
|
|
184
|
+
}
|
|
185
|
+
] },
|
|
186
|
+
|
|
187
|
+
{ type: 'message', title: 'Privacidade no Seu Controlo', ariaLabel: 'Informações sobre proteção de privacidade', html: 'Não armazenamos nem processamos as suas fotos em servidores remotos. Não existem cookies de rastreio. Sem históricos de edição. Não sabemos o que oculta porque nunca vemos as suas imagens. Controlo total, privacidade total, liberdade total.' },
|
|
188
|
+
|
|
189
|
+
{ type: 'title', text: 'Partilhe com Segurança nas Redes Sociais', level: 3 },
|
|
190
|
+
{ type: 'paragraph', html: 'Antes de publicar qualquer foto na Internet, pergunte-se: existe informação que eu preferia que não fosse pública? Rostos de crianças, matrículas, moradas, números de documentos. Uma sessão de privacidade de 2 minutos agora evita anos de problemas.' }
|
|
191
|
+
];
|
|
192
|
+
|
|
193
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
194
|
+
'@context': 'https://schema.org',
|
|
195
|
+
'@type': 'FAQPage',
|
|
196
|
+
mainEntity: faq.map((item) => ({
|
|
197
|
+
'@type': 'Question',
|
|
198
|
+
name: item.question,
|
|
199
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
200
|
+
})),
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
const howToSchema: WithContext<HowTo> = {
|
|
204
|
+
'@context': 'https://schema.org',
|
|
205
|
+
'@type': 'HowTo',
|
|
206
|
+
name: title,
|
|
207
|
+
description,
|
|
208
|
+
step: howTo.map((step) => ({
|
|
209
|
+
'@type': 'HowToStep',
|
|
210
|
+
name: step.name,
|
|
211
|
+
text: step.text,
|
|
212
|
+
})),
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
216
|
+
'@context': 'https://schema.org',
|
|
217
|
+
'@type': 'SoftwareApplication',
|
|
218
|
+
name: title,
|
|
219
|
+
description,
|
|
220
|
+
applicationCategory: 'UtilitiesApplication',
|
|
221
|
+
operatingSystem: 'Web',
|
|
222
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
223
|
+
inLanguage: 'pt',
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
export const content: PrivacyBlurLocaleContent = {
|
|
227
|
+
slug,
|
|
228
|
+
title,
|
|
229
|
+
description,
|
|
230
|
+
ui,
|
|
231
|
+
seo,
|
|
232
|
+
faqTitle: "Perguntas Frequentes",
|
|
233
|
+
faq,
|
|
234
|
+
bibliographyTitle: "Referências",
|
|
235
|
+
bibliography,
|
|
236
|
+
howTo,
|
|
237
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
238
|
+
};
|