@jjlmoya/utils-audiovisual 1.6.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 +59 -58
- package/src/category/i18n/de.ts +198 -0
- package/src/category/i18n/fr.ts +1 -1
- 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/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tool/chromaticLens/i18n/de.ts +246 -0
- package/src/tool/chromaticLens/i18n/en.ts +1 -1
- package/src/tool/chromaticLens/i18n/es.ts +1 -1
- package/src/tool/chromaticLens/i18n/fr.ts +1 -1
- 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/en.ts +1 -1
- package/src/tool/collageMaker/i18n/es.ts +1 -1
- package/src/tool/collageMaker/i18n/fr.ts +1 -1
- 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/en.ts +2 -2
- package/src/tool/exifCleaner/i18n/es.ts +2 -2
- package/src/tool/exifCleaner/i18n/fr.ts +4 -4
- 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 +2 -2
- package/src/tool/imageCompressor/i18n/es.ts +2 -2
- 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/en.ts +2 -2
- package/src/tool/printQualityCalculator/i18n/es.ts +3 -3
- package/src/tool/printQualityCalculator/i18n/fr.ts +3 -3
- 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/en.ts +1 -1
- package/src/tool/privacyBlur/i18n/es.ts +1 -1
- package/src/tool/privacyBlur/i18n/fr.ts +1 -1
- 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/en.ts +1 -1
- package/src/tool/subtitleSync/i18n/es.ts +1 -1
- package/src/tool/subtitleSync/i18n/fr.ts +8 -8
- 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/en.ts +1 -1
- package/src/tool/tvDistance/i18n/es.ts +1 -1
- package/src/tool/tvDistance/i18n/fr.ts +1 -1
- 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/en.ts +1 -1
- package/src/tool/videoFrameExtractor/i18n/es.ts +1 -1
- package/src/tool/videoFrameExtractor/i18n/fr.ts +1 -1
- 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 = '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
|
+
};
|
|
@@ -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 = 'redaktor-konfidencialnosti-online-pikselizaciya-razmytie-lic-foto';
|
|
5
|
+
const title = 'Редактор конфиденциальности: Пикселизация и скрытие лиц на фото';
|
|
6
|
+
const description = 'Защитите свою личность, подвергая цензуре конфиденциальные области ваших фотографий. Пикселизируйте лица, размывайте документы или скрывайте личную информацию на 100% локально.';
|
|
7
|
+
|
|
8
|
+
const ui: PrivacyBlurUI = {
|
|
9
|
+
toolPixel: "Пиксели",
|
|
10
|
+
toolBlur: "Размытие",
|
|
11
|
+
toolSolid: "Фигура",
|
|
12
|
+
intensityLabel: "Интенсивность",
|
|
13
|
+
undoButton: "Отмена",
|
|
14
|
+
downloadButton: "Сохранить",
|
|
15
|
+
dropTitle: "Редактор приватности",
|
|
16
|
+
dropSubtitle: "Перетащите изображение сюда или нажмите, чтобы начать",
|
|
17
|
+
privacySecureLabel: "100% Локально",
|
|
18
|
+
offlineLabel: "Оффлайн",
|
|
19
|
+
autoDetectFaces: "Автопоиск",
|
|
20
|
+
loadingModels: "Загрузка моделей...",
|
|
21
|
+
noFacesDetected: "Лица автоматически не обнаружены.",
|
|
22
|
+
faqTitle: "Часто задаваемые вопросы",
|
|
23
|
+
bibliographyTitle: "Ссылки"
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const faq: PrivacyBlurLocaleContent['faq'] = [
|
|
27
|
+
{
|
|
28
|
+
question: "Загружаются ли мои фотографии на какой-либо сервер?",
|
|
29
|
+
answer: "Нет. Редактор конфиденциальности работает полностью в вашем браузере. Пиксели изменяются локально, и ничего не передается за пределы вашего устройства.",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
question: "Как работает автоматическое обнаружение лиц?",
|
|
33
|
+
answer: "Мы используем легкую нейронную сеть (TinyFaceDetector), которая запускается в вашем браузере для идентификации черт лица без необходимости внешнего подключения.",
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
const howTo: PrivacyBlurLocaleContent['howTo'] = [
|
|
38
|
+
{
|
|
39
|
+
name: "Загрузите фото",
|
|
40
|
+
text: "Перетащите или выберите изображение, содержащее конфиденциальную информацию, которую вы хотите скрыть.",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "Выберите инструмент",
|
|
44
|
+
text: "Выберите между пикселизацией, размытием или сплошным покрытием в зависимости от необходимого уровня приватности.",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "Отметьте область",
|
|
48
|
+
text: "Нажмите и перетащите курсор над зоной, которую вы хотите защитить (лица, номерные знаки, имена и т. д.).",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: "Сохраните результат",
|
|
52
|
+
text: "Загрузите обработанное изображение с уверенностью, что исходные данные недоступны.",
|
|
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: 'Редактор приватности: Пикселизация, Размытие и Скрытие',
|
|
67
|
+
items: [
|
|
68
|
+
'Три инструмента редактирования: Пикселизация, Размытие, Сплошное покрытие',
|
|
69
|
+
'Автоматическое обнаружение лиц с помощью ИИ (TinyFaceDetector)',
|
|
70
|
+
'100% локальная обработка — ваши фото никогда не покидают браузер',
|
|
71
|
+
'Без водяных знаков, без ограничений, полностью бесплатно'
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{ type: 'title', text: 'Цифровая приватность: как защитить ваши визуальные данные', level: 2 },
|
|
75
|
+
{ type: 'paragraph', html: 'В эру социальных сетей бесконтрольный обмен фотографиями может раскрыть конфиденциальные личные данные. Наш инструмент позволяет скрыть критически важную информацию (лица, номерные знаки, имена, адреса) перед загрузкой в Интернет, гарантируя, что ваша конфиденциальность остается под вашим полным контролем.' },
|
|
76
|
+
|
|
77
|
+
{ type: 'stats', items: [
|
|
78
|
+
{ value: '3', label: 'Метода скрытия', icon: 'mdi:tools' },
|
|
79
|
+
{ value: '100%', label: 'Локальная приватность', icon: 'mdi:shield-check' },
|
|
80
|
+
{ value: 'ИИ', label: 'Детекция лиц', icon: 'mdi:brain' }
|
|
81
|
+
], columns: 3 },
|
|
82
|
+
|
|
83
|
+
{ type: 'title', text: 'Объяснение трех методов скрытия', level: 3 },
|
|
84
|
+
{ type: 'comparative', items: [
|
|
85
|
+
{
|
|
86
|
+
title: 'Пикселизация',
|
|
87
|
+
description: 'Разбивает область на квадраты, которые невозможно распознать',
|
|
88
|
+
icon: 'mdi:blur',
|
|
89
|
+
points: [
|
|
90
|
+
'Максимальное необратимое запутывание',
|
|
91
|
+
'Более безопасно против распознавания лиц',
|
|
92
|
+
'Заметно, ясно, что что-то было скрыто',
|
|
93
|
+
'Идеально: лица на публичных фотографиях'
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
title: 'Размытие (Blur)',
|
|
98
|
+
description: 'Гауссово сглаживание — более естественный вид',
|
|
99
|
+
icon: 'mdi:blur-off',
|
|
100
|
+
points: [
|
|
101
|
+
'Более элегантный визуальный вид',
|
|
102
|
+
'Сохраняет некоторую цветовую связность',
|
|
103
|
+
'Математически обратимо (теоретически)',
|
|
104
|
+
'Идеально: менее конфиденциальная информация'
|
|
105
|
+
],
|
|
106
|
+
highlight: true
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Сплошное покрытие',
|
|
110
|
+
description: 'Непрозрачный блок цвета — максимальная приватность',
|
|
111
|
+
icon: 'mdi:rectangle',
|
|
112
|
+
points: [
|
|
113
|
+
'Заметное, очевидное скрытие',
|
|
114
|
+
'Максимальная юридическая безопасность/приватность',
|
|
115
|
+
'Изменяет визуальную композицию',
|
|
116
|
+
'Идеально: документы, сверхчувствительные данные'
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
], columns: 3 },
|
|
120
|
+
|
|
121
|
+
{ type: 'title', text: 'Автоматическое обнаружение лиц с помощью ИИ', level: 3 },
|
|
122
|
+
{ type: 'paragraph', html: 'Наш инструмент использует TinyFaceDetector — компактную нейронную сеть, которая запускается прямо в вашем браузере для автоматической идентификации лиц:' },
|
|
123
|
+
{ type: 'list', items: [
|
|
124
|
+
'<strong>100% Локально:</strong> Модель ИИ работает на вашем GPU/CPU, а не на удаленных серверах.',
|
|
125
|
+
'<strong>Без интернета:</strong> После первоначальной загрузки работает полностью оффлайн.',
|
|
126
|
+
'<strong>Приватность гарантирована:</strong> Никто не видит лиц: ни Google, ни OpenAI, ни мы.',
|
|
127
|
+
'<strong>Автоматика в один клик:</strong> Обнаруживает лица и позволяет скрыть их одним нажатием.'
|
|
128
|
+
], icon: 'mdi:check' },
|
|
129
|
+
|
|
130
|
+
{ type: 'card', title: 'Privacy by Design', html: 'Обрабатывая изображения с помощью локальных ресурсов вашего браузера, мы гарантируем, что оригинальные фотографии никогда не покинут ваше устройство. Даже если вы передумаете, ничего не было передано. Это высший стандарт цифровой приватности.' },
|
|
131
|
+
|
|
132
|
+
{ type: 'title', text: 'Сценарии использования приватности', level: 3 },
|
|
133
|
+
{ type: 'table', headers: ['Конфиденциальная информация', 'Рекомендуемый метод', 'Срочность'], rows: [
|
|
134
|
+
['Лица людей', 'Пикселизация или Размытие', 'Критично'],
|
|
135
|
+
['Автомобильные номера', 'Пикселизация (необратимо)', 'Критично'],
|
|
136
|
+
['Удостоверения личности', 'Сплошное покрытие или Пикселизация', 'Критично'],
|
|
137
|
+
['Написанные имена/адреса', 'Сплошное покрытие или Пикселизация', 'Высокая'],
|
|
138
|
+
['Номера телефонов', 'Пикселизация или Покрытие', 'Высокая'],
|
|
139
|
+
['Медицинская информация', 'Сплошное покрытие', 'Критично'],
|
|
140
|
+
['Видимые сигналы WiFi', 'Пикселизация', 'Средняя']
|
|
141
|
+
] },
|
|
142
|
+
|
|
143
|
+
{ type: 'proscons', items: [
|
|
144
|
+
{
|
|
145
|
+
pro: 'Полная приватность: 100% локальная обработка, без серверов, без хранения',
|
|
146
|
+
con: 'Требуется современный браузер с поддержкой Canvas и WebGL'
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
pro: 'Автоматическое обнаружение лиц экономит время',
|
|
150
|
+
con: 'ИИ не идеален — лица в профиль или частично закрытые могут быть не найдены'
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
pro: 'Три метода позволяют выбирать между безопасностью и эстетикой',
|
|
154
|
+
con: 'Нет продвинутых функций (умная деформация, контекстное заполнение)'
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
pro: 'Полностью бесплатно, без рекламы, без ограничений',
|
|
158
|
+
con: 'Не является эквивалентом профессионального ПО, такого как Photoshop'
|
|
159
|
+
}
|
|
160
|
+
], proTitle: 'Преимущества', conTitle: 'Ограничения' },
|
|
161
|
+
|
|
162
|
+
{ type: 'diagnostic', variant: 'warning', title: 'Предупреждение: Размытие НЕ на 100% безопасно', icon: 'mdi:alert', badge: 'Безопасность', html: 'Гауссово размытие математически обратимо с помощью сложных инверсных алгоритмов. Если информация является КРИТИЧЕСКОЙ (юридические документы, личность), используйте <strong>Пикселизацию или Сплошное покрытие</strong>. Размытие выглядит эстетичнее, но менее безопасно.' },
|
|
163
|
+
|
|
164
|
+
{ type: 'glossary', items: [
|
|
165
|
+
{
|
|
166
|
+
term: 'Пикселизация',
|
|
167
|
+
definition: 'Снижение разрешения путем разделения области на одноцветные блоки. Необратимо. Максимальная защита от ИИ-распознавания лиц.'
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
term: 'Размытие по Гауссу',
|
|
171
|
+
definition: 'Математическое сглаживание на основе нормального распределения. Теоретически обратимо с помощью деконволюции, но на практике очень сложно.'
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
term: 'Сплошное покрытие',
|
|
175
|
+
definition: 'Непрозрачный блок равномерного цвета. Максимальная безопасность, максимальная юридическая приватность, менее элегантно визуально.'
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
term: 'TinyFaceDetector',
|
|
179
|
+
definition: 'Легкая сверточная нейронная сеть (CNN) для обнаружения лиц. Работает локально в браузере без необходимости во внешнем сервере.'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
term: 'Privacy by Design (PbD)',
|
|
183
|
+
definition: 'Подход, при котором приватность интегрируется на этапе проектирования системы, а не добавляется позже. Наш локальный подход — это Privacy by Design.'
|
|
184
|
+
}
|
|
185
|
+
] },
|
|
186
|
+
|
|
187
|
+
{ type: 'message', title: 'Приватность под вашим контролем', ariaLabel: 'Информация о защите приватности', html: 'Мы не храним и не обрабатываем ваши фотографии на удаленных серверах. Нет трекинговых куки. Нет истории правок. Мы не знаем, что вы скрываете, потому что никогда не видим ваши изображения. Полный контроль, полная приватность, полная свобода.' },
|
|
188
|
+
|
|
189
|
+
{ type: 'title', text: 'Безопасно делитесь в соцсетях', level: 3 },
|
|
190
|
+
{ type: 'paragraph', html: 'Перед тем как опубликовать любое фото в Интернете, спросите себя: есть ли там информация, которую я бы предпочел не делать публичной? Лица детей, номера машин, адреса, номера документов. 2-минутная сессия приватности сейчас позволит избежать проблем на годы.' }
|
|
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: 'ru',
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
export const content: PrivacyBlurLocaleContent = {
|
|
227
|
+
slug,
|
|
228
|
+
title,
|
|
229
|
+
description,
|
|
230
|
+
ui,
|
|
231
|
+
seo,
|
|
232
|
+
faqTitle: "Часто задаваемые вопросы",
|
|
233
|
+
faq,
|
|
234
|
+
bibliographyTitle: "Ссылки",
|
|
235
|
+
bibliography,
|
|
236
|
+
howTo,
|
|
237
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
238
|
+
};
|