@jjlmoya/utils-audiovisual 1.19.0 → 1.21.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 +4 -2
- package/src/category/i18n/de.ts +1 -1
- package/src/category/i18n/fr.ts +1 -1
- package/src/category/i18n/ru.ts +1 -1
- package/src/layouts/PreviewLayout.astro +7 -2
- package/src/tests/diacritics_density.test.ts +118 -0
- package/src/tests/inverted_punctuation.test.ts +84 -0
- package/src/tests/no_en_dash.test.ts +70 -0
- package/src/tests/pagespeed_best_practices.test.ts +198 -0
- package/src/tests/script_density.test.ts +94 -0
- package/src/tool/chromaticLens/component.astro +2 -2
- package/src/tool/chromaticLens/i18n/de.ts +6 -6
- package/src/tool/chromaticLens/i18n/fr.ts +3 -3
- package/src/tool/chromaticLens/i18n/pl.ts +1 -1
- package/src/tool/chromaticLens/i18n/ru.ts +10 -10
- package/src/tool/chromaticLens/i18n/zh.ts +2 -2
- package/src/tool/collageMaker/component.astro +3 -3
- package/src/tool/collageMaker/i18n/de.ts +6 -6
- package/src/tool/collageMaker/i18n/fr.ts +4 -4
- package/src/tool/collageMaker/i18n/pl.ts +5 -5
- package/src/tool/collageMaker/i18n/ru.ts +12 -12
- package/src/tool/collageMaker/i18n/sv.ts +3 -3
- package/src/tool/collageMaker/i18n/zh.ts +1 -1
- package/src/tool/depthOfFieldCalculator/component.astro +1 -1
- package/src/tool/depthOfFieldCalculator/i18n/de.ts +3 -3
- package/src/tool/depthOfFieldCalculator/i18n/en.ts +7 -7
- package/src/tool/depthOfFieldCalculator/i18n/es.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/fr.ts +6 -6
- package/src/tool/depthOfFieldCalculator/i18n/id.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/it.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/ja.ts +1 -1
- package/src/tool/depthOfFieldCalculator/i18n/ko.ts +1 -1
- package/src/tool/depthOfFieldCalculator/i18n/nl.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/pl.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/pt.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/ru.ts +6 -6
- package/src/tool/depthOfFieldCalculator/i18n/sv.ts +2 -2
- package/src/tool/depthOfFieldCalculator/i18n/tr.ts +1 -1
- package/src/tool/depthOfFieldCalculator/i18n/zh.ts +3 -3
- package/src/tool/exifCleaner/component.astro +1 -1
- package/src/tool/exifCleaner/i18n/de.ts +8 -8
- package/src/tool/exifCleaner/i18n/fr.ts +11 -11
- package/src/tool/exifCleaner/i18n/pl.ts +6 -6
- package/src/tool/exifCleaner/i18n/ru.ts +14 -14
- package/src/tool/exifCleaner/i18n/zh.ts +3 -3
- package/src/tool/imageCompressor/component.astro +6 -4
- package/src/tool/imageCompressor/i18n/de.ts +16 -16
- package/src/tool/imageCompressor/i18n/fr.ts +8 -8
- package/src/tool/imageCompressor/i18n/pl.ts +1 -1
- package/src/tool/imageCompressor/i18n/ru.ts +9 -9
- package/src/tool/imageCompressor/i18n/zh.ts +1 -1
- package/src/tool/printQualityCalculator/component.astro +118 -110
- package/src/tool/printQualityCalculator/i18n/de.ts +5 -5
- package/src/tool/printQualityCalculator/i18n/fr.ts +11 -11
- package/src/tool/printQualityCalculator/i18n/pl.ts +4 -4
- package/src/tool/printQualityCalculator/i18n/ru.ts +11 -11
- package/src/tool/printQualityCalculator/i18n/zh.ts +4 -4
- package/src/tool/printQualityCalculator/print-quality-calculator-pixels-to-cm-dpi.css +193 -40
- package/src/tool/privacyBlur/component.astro +2 -2
- package/src/tool/privacyBlur/i18n/de.ts +5 -5
- package/src/tool/privacyBlur/i18n/fr.ts +9 -9
- package/src/tool/privacyBlur/i18n/ru.ts +6 -6
- package/src/tool/subtitleSync/component.astro +2 -2
- package/src/tool/subtitleSync/i18n/de.ts +1 -1
- package/src/tool/subtitleSync/i18n/fr.ts +9 -9
- package/src/tool/subtitleSync/i18n/ru.ts +6 -6
- package/src/tool/subtitleSync/i18n/sv.ts +4 -4
- package/src/tool/timelapseCalculator/i18n/fr.ts +6 -6
- package/src/tool/timelapseCalculator/i18n/ru.ts +3 -3
- package/src/tool/timelapseCalculator/i18n/zh.ts +4 -4
- package/src/tool/tvDistance/component.astro +1 -1
- package/src/tool/tvDistance/i18n/fr.ts +2 -2
- package/src/tool/tvDistance/i18n/ru.ts +9 -9
- package/src/tool/tvDistance/i18n/zh.ts +4 -4
- package/src/tool/videoFrameExtractor/component.astro +3 -3
- package/src/tool/videoFrameExtractor/i18n/fr.ts +8 -8
- package/src/tool/videoFrameExtractor/i18n/ru.ts +2 -2
- package/src/tool/videoMerger/component.astro +3 -3
- package/src/tool/videoMerger/i18n/de.ts +1 -1
- package/src/tool/videoMerger/i18n/fr.ts +6 -6
|
@@ -3,14 +3,14 @@ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dt
|
|
|
3
3
|
import type { DepthOfFieldUI, DepthOfFieldLocaleContent } from '../index';
|
|
4
4
|
|
|
5
5
|
const slug = 'calculateur-profondeur-de-champ';
|
|
6
|
-
const title = 'Calculateur de Profondeur de Champ
|
|
6
|
+
const title = 'Calculateur de Profondeur de Champ: DoF en Temps Réel';
|
|
7
7
|
const description = 'Calculez la profondeur de champ, la distance hyperfocale et les limites de mise au point en temps réel. Compatible avec tous les capteurs.';
|
|
8
8
|
|
|
9
9
|
const ui: DepthOfFieldUI = {
|
|
10
10
|
title: 'Profondeur de Champ',
|
|
11
11
|
paramsTitle: 'Paramètres',
|
|
12
12
|
sensorLabel: 'Capteur de l\'Appareil',
|
|
13
|
-
moreLabel: 'Plus de capteurs
|
|
13
|
+
moreLabel: 'Plus de capteurs...',
|
|
14
14
|
apertureLabel: 'Ouverture',
|
|
15
15
|
focalLabel: 'Distance Focale',
|
|
16
16
|
distanceLabel: 'Distance du Sujet',
|
|
@@ -78,9 +78,9 @@ const seo: DepthOfFieldLocaleContent['seo'] = [
|
|
|
78
78
|
['Distance du Sujet', '1m → 10m', 'Sujet plus loin = DoF plus grande'],
|
|
79
79
|
]},
|
|
80
80
|
|
|
81
|
-
{ type: 'title', text: 'La Distance Hyperfocale
|
|
81
|
+
{ type: 'title', text: 'La Distance Hyperfocale: Netteté Maximale', level: 3 },
|
|
82
82
|
{ type: 'paragraph', html: 'En réglant la mise au point sur la <strong>distance hyperfocale</strong>, tout ce qui se trouve entre la moitié de cette distance et l\'infini sera net. Idéal pour les paysages.' },
|
|
83
|
-
{ type: 'tip', title: 'Conseil pratique', html: 'Pour la photo de rue, réglez votre mise au point sur l\'hyperfocale. Avec un 35mm sur APS-C à f/8, l\'hyperfocale est à environ <strong>4 mètres</strong
|
|
83
|
+
{ type: 'tip', title: 'Conseil pratique', html: 'Pour la photo de rue, réglez votre mise au point sur l\'hyperfocale. Avec un 35mm sur APS-C à f/8, l\'hyperfocale est à environ <strong>4 mètres</strong>: tout sera net de 2m à l\'infini.' },
|
|
84
84
|
|
|
85
85
|
{ type: 'title', text: 'Taille du Capteur et Cercle de Confusion', level: 3 },
|
|
86
86
|
{ type: 'paragraph', html: 'Le <strong>cercle de confusion (CoC)</strong> définit la netteté acceptable. Un capteur Plein Format a un CoC de 0,030 mm, contre ~0,006 mm pour un smartphone. Un CoC plus petit signifie des critères de netteté plus stricts.' },
|
|
@@ -90,9 +90,9 @@ const seo: DepthOfFieldLocaleContent['seo'] = [
|
|
|
90
90
|
{ label: 'Smartphone', value: '0,006 mm', icon: 'mdi:cellphone' },
|
|
91
91
|
]},
|
|
92
92
|
|
|
93
|
-
{ type: 'title', text: 'DoF au Cinéma
|
|
93
|
+
{ type: 'title', text: 'DoF au Cinéma: Focale vs Capteur', level: 3 },
|
|
94
94
|
{ type: 'paragraph', html: 'Le tournage en Super 35 utilise souvent des focales plus longues pour compresser la perspective, créant ainsi le "look cinéma". Un objectif lumineux à 85mm est le choix classique pour le portrait.' },
|
|
95
|
-
{ type: 'diagnostic', variant: 'success', title: 'La Règle de Distribution de la Netteté', icon: 'mdi:lightbulb-outline', badge: 'Technique Pro', html: 'Pour un sujet à 3m avec un 50mm à f/2.8
|
|
95
|
+
{ type: 'diagnostic', variant: 'success', title: 'La Règle de Distribution de la Netteté', icon: 'mdi:lightbulb-outline', badge: 'Technique Pro', html: 'Pour un sujet à 3m avec un 50mm à f/2.8: la zone nette s\'étend vers l\'arrière environ <strong>deux fois plus</strong> que vers l\'avant (ratio 2:1).' },
|
|
96
96
|
];
|
|
97
97
|
|
|
98
98
|
const faqSchema: WithContext<FAQPage> = {
|
|
@@ -10,7 +10,7 @@ const ui: DepthOfFieldUI = {
|
|
|
10
10
|
title: 'Kalkulator Kedalaman Bidang',
|
|
11
11
|
paramsTitle: 'Parameter',
|
|
12
12
|
sensorLabel: 'Sensor Kamera',
|
|
13
|
-
moreLabel: 'Sensor lainnya
|
|
13
|
+
moreLabel: 'Sensor lainnya...',
|
|
14
14
|
apertureLabel: 'Apertur',
|
|
15
15
|
focalLabel: 'Panjang Fokus',
|
|
16
16
|
distanceLabel: 'Jarak Objek',
|
|
@@ -92,7 +92,7 @@ const seo: DepthOfFieldLocaleContent['seo'] = [
|
|
|
92
92
|
|
|
93
93
|
{ type: 'title', text: 'DoF dalam Sinema: Panjang Fokus vs Sensor', level: 3 },
|
|
94
94
|
{ type: 'paragraph', html: 'Sinematografer yang menggunakan Super 35 sering menggunakan panjang fokus yang lebih panjang untuk mengompresi perspektif, yang juga mempersempit DoF dan menciptakan "tampilan sinematik".' },
|
|
95
|
-
{ type: 'diagnostic', variant: 'success', title: 'Aturan Distribusi Fokus', icon: 'mdi:lightbulb-outline', badge: 'Teknik Pro', html: 'Untuk subjek pada 3 meter dengan lensa 50mm di f/2.8
|
|
95
|
+
{ type: 'diagnostic', variant: 'success', title: 'Aturan Distribusi Fokus', icon: 'mdi:lightbulb-outline', badge: 'Teknik Pro', html: 'Untuk subjek pada 3 meter dengan lensa 50mm di f/2.8: zona tajam di belakang subjek selalu lebih besar daripada di depan - kira-kira dengan <strong>rasio 2:1</strong>.' },
|
|
96
96
|
];
|
|
97
97
|
|
|
98
98
|
const faqSchema: WithContext<FAQPage> = {
|
|
@@ -10,7 +10,7 @@ const ui: DepthOfFieldUI = {
|
|
|
10
10
|
title: 'Profondità di Campo',
|
|
11
11
|
paramsTitle: 'Parametri',
|
|
12
12
|
sensorLabel: 'Sensore Fotocamera',
|
|
13
|
-
moreLabel: 'Altri sensori
|
|
13
|
+
moreLabel: 'Altri sensori...',
|
|
14
14
|
apertureLabel: 'Apertura',
|
|
15
15
|
focalLabel: 'Lunghezza Focale',
|
|
16
16
|
distanceLabel: 'Distanza Soggetto',
|
|
@@ -92,7 +92,7 @@ const seo: DepthOfFieldLocaleContent['seo'] = [
|
|
|
92
92
|
|
|
93
93
|
{ type: 'title', text: 'DoF nel cinema: Focale vs Sensore', level: 3 },
|
|
94
94
|
{ type: 'paragraph', html: 'Riprendere in Super 35 (simile ad APS-C) spesso richiede focali più lunghe per comprimere la prospettiva, creando il classico "look cinematografico". Un 85mm luminoso è ideale per i ritratti.' },
|
|
95
|
-
{ type: 'diagnostic', variant: 'success', title: 'La regola di distribuzione del fuoco', icon: 'mdi:lightbulb-outline', badge: 'Tecnica Pro', html: 'Per un soggetto a 3m con un 50mm a f/2.8
|
|
95
|
+
{ type: 'diagnostic', variant: 'success', title: 'La regola di distribuzione del fuoco', icon: 'mdi:lightbulb-outline', badge: 'Tecnica Pro', html: 'Per un soggetto a 3m con un 50mm a f/2.8: la zona nitida dietro il soggetto è sempre maggiore di quella davanti, con un <strong>rapporto di circa 2:1</strong>.' },
|
|
96
96
|
];
|
|
97
97
|
|
|
98
98
|
const faqSchema: WithContext<FAQPage> = {
|
|
@@ -10,7 +10,7 @@ const ui: DepthOfFieldUI = {
|
|
|
10
10
|
title: '被写界深度計算機',
|
|
11
11
|
paramsTitle: '設定パラメータ',
|
|
12
12
|
sensorLabel: 'カメラセンサー',
|
|
13
|
-
moreLabel: '
|
|
13
|
+
moreLabel: 'その他のセンサー...',
|
|
14
14
|
apertureLabel: '絞り値 (Aperture)',
|
|
15
15
|
focalLabel: '焦点距離 (Focal Length)',
|
|
16
16
|
distanceLabel: '被写体距離',
|
|
@@ -10,7 +10,7 @@ const ui: DepthOfFieldUI = {
|
|
|
10
10
|
title: 'Scherptediepte Calculator',
|
|
11
11
|
paramsTitle: 'Parameters',
|
|
12
12
|
sensorLabel: 'Camerasensor',
|
|
13
|
-
moreLabel: 'Meer sensoren
|
|
13
|
+
moreLabel: 'Meer sensoren...',
|
|
14
14
|
apertureLabel: 'Diafragma',
|
|
15
15
|
focalLabel: 'Brandpuntsafstand',
|
|
16
16
|
distanceLabel: 'Afstand tot onderwerp',
|
|
@@ -92,7 +92,7 @@ const seo: DepthOfFieldLocaleContent['seo'] = [
|
|
|
92
92
|
|
|
93
93
|
{ type: 'title', text: 'DoF in film: Brandpuntsafstand vs. Sensor', level: 3 },
|
|
94
94
|
{ type: 'paragraph', html: 'Filmen op Super 35 gebruikt vaak langere brandpuntsafstanden voor de "cinematic look". Een lichtsterke 85mm lens bij portretopnames is een klassieke keuze.' },
|
|
95
|
-
{ type: 'diagnostic', variant: 'success', title: 'De focusverdelingsregel', icon: 'mdi:lightbulb-outline', badge: 'Pro-techniek', html: 'Voor een onderwerp op 3m met 50mm bij f/2.8: het scherptegebied achter het onderwerp is altijd groter dan ervoor
|
|
95
|
+
{ type: 'diagnostic', variant: 'success', title: 'De focusverdelingsregel', icon: 'mdi:lightbulb-outline', badge: 'Pro-techniek', html: 'Voor een onderwerp op 3m met 50mm bij f/2.8: het scherptegebied achter het onderwerp is altijd groter dan ervoor - ongeveer in een <strong>verhouding van 2:1</strong>.' },
|
|
96
96
|
];
|
|
97
97
|
|
|
98
98
|
const faqSchema: WithContext<FAQPage> = {
|
|
@@ -10,7 +10,7 @@ const ui: DepthOfFieldUI = {
|
|
|
10
10
|
title: 'Głębia Ostrości',
|
|
11
11
|
paramsTitle: 'Parametry',
|
|
12
12
|
sensorLabel: 'Matryca Aparatu',
|
|
13
|
-
moreLabel: 'Więcej matryc
|
|
13
|
+
moreLabel: 'Więcej matryc...',
|
|
14
14
|
apertureLabel: 'Przysłona',
|
|
15
15
|
focalLabel: 'Ogniskowa',
|
|
16
16
|
distanceLabel: 'Odległość od Obiektu',
|
|
@@ -92,7 +92,7 @@ const seo: DepthOfFieldLocaleContent['seo'] = [
|
|
|
92
92
|
|
|
93
93
|
{ type: 'title', text: 'DoF w kinie: Ogniskowa vs Matryca', level: 3 },
|
|
94
94
|
{ type: 'paragraph', html: 'Filmowanie w formacie Super 35 często wykorzystuje dłuższe ogniskowe dla uzyskania "filmowego wyglądu". Jasny obiektyw 85mm to klasyk w portrecie.' },
|
|
95
|
-
{ type: 'diagnostic', variant: 'success', title: 'Zasada dystrybucji ostrości', icon: 'mdi:lightbulb-outline', badge: 'Technika Pro', html: 'Dla obiektu w odległości 3m przy 50mm i f/2.8: strefa ostrości za obiektem jest zawsze większa niż przed nim
|
|
95
|
+
{ type: 'diagnostic', variant: 'success', title: 'Zasada dystrybucji ostrości', icon: 'mdi:lightbulb-outline', badge: 'Technika Pro', html: 'Dla obiektu w odległości 3m przy 50mm i f/2.8: strefa ostrości za obiektem jest zawsze większa niż przed nim - około w <strong>stosunku 2:1</strong>.' },
|
|
96
96
|
];
|
|
97
97
|
|
|
98
98
|
const faqSchema: WithContext<FAQPage> = {
|
|
@@ -10,7 +10,7 @@ const ui: DepthOfFieldUI = {
|
|
|
10
10
|
title: 'Profundidade de Campo',
|
|
11
11
|
paramsTitle: 'Parâmetros',
|
|
12
12
|
sensorLabel: 'Sensor da Câmara',
|
|
13
|
-
moreLabel: 'Mais sensores
|
|
13
|
+
moreLabel: 'Mais sensores...',
|
|
14
14
|
apertureLabel: 'Abertura',
|
|
15
15
|
focalLabel: 'Distância Focal',
|
|
16
16
|
distanceLabel: 'Distância do Sujeito',
|
|
@@ -92,7 +92,7 @@ const seo: DepthOfFieldLocaleContent['seo'] = [
|
|
|
92
92
|
|
|
93
93
|
{ type: 'title', text: 'DoF no Cinema: Focal vs. Sensor', level: 3 },
|
|
94
94
|
{ type: 'paragraph', html: 'Filmar em Super 35 exige frequentemente focais mais longas para comprimir a perspetiva, criando o "look cinematográfico". Um 85mm luminoso é a escolha clássica para retrato.' },
|
|
95
|
-
{ type: 'diagnostic', variant: 'success', title: 'A Regra de Distribuição do Foco', icon: 'mdi:lightbulb-outline', badge: 'Técnica Pro', html: 'Para um sujeito a 3m com uma 50mm a f/2.8
|
|
95
|
+
{ type: 'diagnostic', variant: 'success', title: 'A Regra de Distribuição do Foco', icon: 'mdi:lightbulb-outline', badge: 'Técnica Pro', html: 'Para um sujeito a 3m com uma 50mm a f/2.8: a zona nítida atrás do sujeito é sempre maior do que à frente - aprox. na <strong>proporção 2:1</strong>.' },
|
|
96
96
|
];
|
|
97
97
|
|
|
98
98
|
const faqSchema: WithContext<FAQPage> = {
|
|
@@ -10,7 +10,7 @@ const ui: DepthOfFieldUI = {
|
|
|
10
10
|
title: 'Глубина резкости',
|
|
11
11
|
paramsTitle: 'Параметры',
|
|
12
12
|
sensorLabel: 'Матрица камеры',
|
|
13
|
-
moreLabel: 'Больше
|
|
13
|
+
moreLabel: 'Больше матриц...',
|
|
14
14
|
apertureLabel: 'Диафрагма',
|
|
15
15
|
focalLabel: 'Фокусное расстояние',
|
|
16
16
|
distanceLabel: 'Расстояние до объекта',
|
|
@@ -32,7 +32,7 @@ const ui: DepthOfFieldUI = {
|
|
|
32
32
|
const faq: DepthOfFieldLocaleContent['faq'] = [
|
|
33
33
|
{
|
|
34
34
|
question: 'Что такое глубина резкости?',
|
|
35
|
-
answer: 'Глубина резко изображаемого пространства (ГРИП)
|
|
35
|
+
answer: 'Глубина резко изображаемого пространства (ГРИП) - это диапазон расстояний в сцене, которые выглядят резкими. Зависит от диафрагмы, фокусного расстояния, дистанции и матрицы.',
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
question: 'Что такое гиперфокальное расстояние?',
|
|
@@ -69,7 +69,7 @@ const howTo: DepthOfFieldLocaleContent['howTo'] = [
|
|
|
69
69
|
|
|
70
70
|
const seo: DepthOfFieldLocaleContent['seo'] = [
|
|
71
71
|
{ type: 'title', text: 'Понимание глубины резкости в фотографии и кино', level: 2 },
|
|
72
|
-
{ type: 'paragraph', html: 'Глубина резкости
|
|
72
|
+
{ type: 'paragraph', html: 'Глубина резкости - один из мощнейших творческих инструментов. <strong>Малая глубина резкости</strong> выделяет объект, а <strong>большая</strong> - делает резким весь пейзаж. Этот калькулятор дает вам полный контроль.' },
|
|
73
73
|
|
|
74
74
|
{ type: 'title', text: 'Три фактора управления ГРИП', level: 3 },
|
|
75
75
|
{ type: 'table', headers: ['Фактор', 'Увеличение →', 'Влияние на ГРИП'], rows: [
|
|
@@ -83,7 +83,7 @@ const seo: DepthOfFieldLocaleContent['seo'] = [
|
|
|
83
83
|
{ type: 'tip', title: 'Практический совет', html: 'Для стрит-фото установите фокус на гиперфокал. С 35мм на APS-C при f/8 это около <strong>4 метров</strong>: всё от 2м до бесконечности будет в фокусе.' },
|
|
84
84
|
|
|
85
85
|
{ type: 'title', text: 'Размер матрицы и кружок рассеяния', level: 3 },
|
|
86
|
-
{ type: 'paragraph', html: '<strong>Кружок рассеяния (CoC)</strong> определяет границу резкости. Для Full Frame это 0.030 мм, для смартфона
|
|
86
|
+
{ type: 'paragraph', html: '<strong>Кружок рассеяния (CoC)</strong> определяет границу резкости. Для Full Frame это 0.030 мм, для смартфона - около 0.006 мм. Меньший CoC требует большей точности.', label: 'Примеры CoC' },
|
|
87
87
|
{ type: 'stats', columns: 3, items: [
|
|
88
88
|
{ label: 'Full Frame', value: '0.030 мм', icon: 'mdi:camera' },
|
|
89
89
|
{ label: 'APS-C', value: '0.019 мм', icon: 'mdi:camera-outline' },
|
|
@@ -91,8 +91,8 @@ const seo: DepthOfFieldLocaleContent['seo'] = [
|
|
|
91
91
|
]},
|
|
92
92
|
|
|
93
93
|
{ type: 'title', text: 'ГРИП в кино: Фокус vs Матрица', level: 3 },
|
|
94
|
-
{ type: 'paragraph', html: 'В кино на Super 35 часто используют длинный фокус для сжатия перспективы и создания "киношного вида". Светосильный 85мм
|
|
95
|
-
{ type: 'diagnostic', variant: 'success', title: 'Правило распределения фокуса', icon: 'mdi:lightbulb-outline', badge: 'Профи-прием', html: 'Для объекта на 3м с 50мм на f/2.8: зона резкости сзади всегда больше, чем спереди
|
|
94
|
+
{ type: 'paragraph', html: 'В кино на Super 35 часто используют длинный фокус для сжатия перспективы и создания "киношного вида". Светосильный 85мм - классика для портретов.' },
|
|
95
|
+
{ type: 'diagnostic', variant: 'success', title: 'Правило распределения фокуса', icon: 'mdi:lightbulb-outline', badge: 'Профи-прием', html: 'Для объекта на 3м с 50мм на f/2.8: зона резкости сзади всегда больше, чем спереди - примерно в <strong>пропорции 2:1</strong>.' },
|
|
96
96
|
];
|
|
97
97
|
|
|
98
98
|
const faqSchema: WithContext<FAQPage> = {
|
|
@@ -10,7 +10,7 @@ const ui: DepthOfFieldUI = {
|
|
|
10
10
|
title: 'Skärpedjupskalkylator',
|
|
11
11
|
paramsTitle: 'Parametrar',
|
|
12
12
|
sensorLabel: 'Kamerasensor',
|
|
13
|
-
moreLabel: 'Fler sensorer
|
|
13
|
+
moreLabel: 'Fler sensorer...',
|
|
14
14
|
apertureLabel: 'Bländare',
|
|
15
15
|
focalLabel: 'Brännvidd',
|
|
16
16
|
distanceLabel: 'Motivavstånd',
|
|
@@ -92,7 +92,7 @@ const seo: DepthOfFieldLocaleContent['seo'] = [
|
|
|
92
92
|
|
|
93
93
|
{ type: 'title', text: 'DoF i film: Brännvidd vs Sensor', level: 3 },
|
|
94
94
|
{ type: 'paragraph', html: 'Filmning i Super 35 använder ofta längre brännvidd för att komprimera perspektivet och skapa en "filmisk look". Ett ljusstarkt 85mm-objektiv är klassiskt för porträtt.' },
|
|
95
|
-
{ type: 'diagnostic', variant: 'success', title: 'Regeln för fokusfördelning', icon: 'mdi:lightbulb-outline', badge: 'Pro-teknik', html: 'För ett motiv på 3m med 50mm vid f/2.8: det skarpa området bakom motivet är alltid större än framför
|
|
95
|
+
{ type: 'diagnostic', variant: 'success', title: 'Regeln för fokusfördelning', icon: 'mdi:lightbulb-outline', badge: 'Pro-teknik', html: 'För ett motiv på 3m med 50mm vid f/2.8: det skarpa området bakom motivet är alltid större än framför - ungefär i <strong>förhållandet 2:1</strong>.' },
|
|
96
96
|
];
|
|
97
97
|
|
|
98
98
|
const faqSchema: WithContext<FAQPage> = {
|
|
@@ -10,7 +10,7 @@ const ui: DepthOfFieldUI = {
|
|
|
10
10
|
title: 'Alan Derinliği Hesaplama',
|
|
11
11
|
paramsTitle: 'Parametreler',
|
|
12
12
|
sensorLabel: 'Kamera Sensörü',
|
|
13
|
-
moreLabel: 'Daha fazla sensör
|
|
13
|
+
moreLabel: 'Daha fazla sensör...',
|
|
14
14
|
apertureLabel: 'Diyafram',
|
|
15
15
|
focalLabel: 'Odak Uzaklığı',
|
|
16
16
|
distanceLabel: 'Obje Mesafesi',
|
|
@@ -10,7 +10,7 @@ const ui: DepthOfFieldUI = {
|
|
|
10
10
|
title: '景深计算器',
|
|
11
11
|
paramsTitle: '设定参数',
|
|
12
12
|
sensorLabel: '相机传感器',
|
|
13
|
-
moreLabel: '
|
|
13
|
+
moreLabel: '更多传感器...',
|
|
14
14
|
apertureLabel: '光圈值',
|
|
15
15
|
focalLabel: '焦距',
|
|
16
16
|
distanceLabel: '拍摄距离',
|
|
@@ -83,7 +83,7 @@ const seo: DepthOfFieldLocaleContent['seo'] = [
|
|
|
83
83
|
{ type: 'tip', title: '实践建议', html: '对于街头摄影,将焦点设为超焦距。在 APS-C 上使用 35mm 镜头并设置 f/8 时,超焦距约为 <strong>4 米</strong>:从 2 米到无穷远的一切都将保持清晰。' },
|
|
84
84
|
|
|
85
85
|
{ type: 'title', text: '传感器尺寸与弥散圆', level: 3 },
|
|
86
|
-
{ type: 'paragraph', html: '<strong>弥散圆 (CoC)</strong>
|
|
86
|
+
{ type: 'paragraph', html: '<strong>弥散圆 (CoC)</strong> 是定义\"清晰度\"的阈值。全画幅传感器的 CoC 为 0.030mm,而智能手机约为 0.006mm。CoC 值越小意味着清晰度要求越严格。' },
|
|
87
87
|
{ type: 'stats', columns: 3, items: [
|
|
88
88
|
{ label: '全画幅', value: '0.030 mm', icon: 'mdi:camera' },
|
|
89
89
|
{ label: 'APS-C', value: '0.019 mm', icon: 'mdi:camera-outline' },
|
|
@@ -91,7 +91,7 @@ const seo: DepthOfFieldLocaleContent['seo'] = [
|
|
|
91
91
|
]},
|
|
92
92
|
|
|
93
93
|
{ type: 'title', text: '电影中的景深:焦距 vs. 传感器', level: 3 },
|
|
94
|
-
{ type: 'paragraph', html: '在 Super 35(接近 APS-C
|
|
94
|
+
{ type: 'paragraph', html: '在 Super 35(接近 APS-C)上拍摄的电影人经常使用较长焦距来压缩透视,这也会收窄景深,营造出\"电影感\"。大光圈 85mm 是经典人像选择。' },
|
|
95
95
|
{ type: 'diagnostic', variant: 'success', title: '焦点分布规律', icon: 'mdi:lightbulb-outline', badge: '专家技法', html: '对于 3 米处的主体,使用 50mm f/2.8 全画幅拍摄:主体后的清晰区域总是比主体前大,比例约为 <strong>2:1</strong>。' },
|
|
96
96
|
];
|
|
97
97
|
|
|
@@ -12,7 +12,7 @@ const { ui } = Astro.props;
|
|
|
12
12
|
<div class="ec-card">
|
|
13
13
|
|
|
14
14
|
<div id="ec-initial" class="ec-drop">
|
|
15
|
-
<input type="file" id="ec-file" accept="image/jpeg,image/png,image/webp" class="ec-hidden" />
|
|
15
|
+
<input type="file" id="ec-file" accept="image/jpeg,image/png,image/webp" class="ec-hidden" aria-label={ui.dropTitle} />
|
|
16
16
|
<div class="ec-drop-icon">
|
|
17
17
|
<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
|
|
18
18
|
<path d="M19.35 10.04A7.49 7.49 0 0 0 12 4C9.11 4 6.6 5.64 5.35 8.04A5.994 5.994 0 0 0 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zm-4.35 3.96h-3v3H9v-3H6v-2h3V8h2v3h3v2z"/>
|
|
@@ -73,15 +73,15 @@ const seo: ExifCleanerLocaleContent['seo'] = [
|
|
|
73
73
|
items: [
|
|
74
74
|
'GPS-Koordinaten und Standort sofort aus Ihren Fotos entfernen',
|
|
75
75
|
'Kameramodell, Seriennummer und technische Informationen löschen',
|
|
76
|
-
'%100 % browserbasierte Verarbeitung
|
|
77
|
-
'Behält die visuelle Qualität bei
|
|
76
|
+
'%100 % browserbasierte Verarbeitung - Ihre Bilder verlassen niemals Ihr Gerät',
|
|
77
|
+
'Behält die visuelle Qualität bei - nur versteckte Daten werden entfernt'
|
|
78
78
|
]
|
|
79
79
|
},
|
|
80
80
|
{ type: 'title', text: 'Vollständiger Leitfaden zum Datenschutz und zu EXIF Metadaten in der digitalen Fotografie', level: 2 },
|
|
81
81
|
{ type: 'paragraph', html: 'Haben Sie sich jemals gefragt, wie viele persönliche Informationen Sie teilen, wenn Sie ein Foto in soziale Medien hochladen? EXIF-Metadaten sind wie ein <strong>unsichtbarer Fingerabdruck</strong>, der alles verraten kann, von Ihrem genauen Wohnort bis hin zum Preis Ihrer Fotoausrüstung. Dieser Leitfaden erklärt, wie Sie Ihre Privatsphäre effektiv schützen.' },
|
|
82
82
|
|
|
83
83
|
{ type: 'stats', items: [
|
|
84
|
-
{ value: '100 %', label: 'Privatsphäre
|
|
84
|
+
{ value: '100 %', label: 'Privatsphäre - Lokale Verarbeitung', icon: 'mdi:shield-check' },
|
|
85
85
|
{ value: '0 %', label: 'Auf Servern gespeicherte Daten', icon: 'mdi:database' },
|
|
86
86
|
{ value: 'Sofort', label: 'Metadaten-Entfernung', icon: 'mdi:lightning-bolt' }
|
|
87
87
|
], columns: 3 },
|
|
@@ -163,26 +163,26 @@ const seo: ExifCleanerLocaleContent['seo'] = [
|
|
|
163
163
|
|
|
164
164
|
{ type: 'proscons', items: [
|
|
165
165
|
{
|
|
166
|
-
pro: 'Absoluter Datenschutz
|
|
166
|
+
pro: 'Absoluter Datenschutz - 100 % browserbasierte Verarbeitung',
|
|
167
167
|
con: 'Erfordert einen modernen Browser mit JavaScript-Unterstützung'
|
|
168
168
|
},
|
|
169
169
|
{
|
|
170
|
-
pro: 'Sofort
|
|
170
|
+
pro: 'Sofort - Reinigung eines Fotos dauert weniger als 1 Sekunde',
|
|
171
171
|
con: 'Verarbeitung großer Fotos kann auf älteren Geräten langsam sein'
|
|
172
172
|
},
|
|
173
173
|
{
|
|
174
|
-
pro: 'Null Qualitätsverlust
|
|
174
|
+
pro: 'Null Qualitätsverlust - entfernt nur technische Daten, keine Pixel',
|
|
175
175
|
con: 'Bearbeitet das Bild nicht (Zuschnitte, Rotationen usw.)'
|
|
176
176
|
},
|
|
177
177
|
{
|
|
178
|
-
pro: 'Völlig kostenlos ohne Limits
|
|
178
|
+
pro: 'Völlig kostenlos ohne Limits - unbegrenzt Fotos verarbeiten',
|
|
179
179
|
con: 'Kein Premium-Support oder Cloud-Speicher'
|
|
180
180
|
}
|
|
181
181
|
], proTitle: 'Hauptvorteile', conTitle: 'Einschränkungen' },
|
|
182
182
|
|
|
183
183
|
{ type: 'tip', title: 'Tipp zur digitalen Sicherheit', html: '<strong>Reinigen Sie Ihre Fotos BEVOR sie</strong> in sozialen Netzwerken gepostet werden. Selbst wenn Sie einen Post löschen, könnten Metadaten bereits von Suchmaschinen oder Archiven indexiert worden sein. Vorsorge ist besser als Nachsorge. Machen Sie es sich zur Gewohnheit: <br><br><em>Foto → EXIF reinigen → Posten</em>' },
|
|
184
184
|
|
|
185
|
-
{ type: 'diagnostic', variant: 'warning', title: 'Reale Risiken bei fehlender Reinigung', icon: 'mdi:alert-circle', badge: 'Kritische Sicherheit', html: '<strong>Dokumentierte Fälle:</strong><br>- Eltern posten Fotos von Kindern
|
|
185
|
+
{ type: 'diagnostic', variant: 'warning', title: 'Reale Risiken bei fehlender Reinigung', icon: 'mdi:alert-circle', badge: 'Kritische Sicherheit', html: '<strong>Dokumentierte Fälle:</strong><br>- Eltern posten Fotos von Kindern - Täter verfolgten GPS<br>- Reisende Fotografen - Häuser wurden während ihrer Abwesenheit ausgeraubt<br>- Influencer - Wohnorte wurden von obsessiven Fans identifiziert<br><br>Das ist keine Paranoia: Es ist grundlegende digitale Hygiene im Jahr 2026.' },
|
|
186
186
|
|
|
187
187
|
{ type: 'glossary', items: [
|
|
188
188
|
{
|
|
@@ -4,7 +4,7 @@ import type { ExifCleanerUI, ExifCleanerLocaleContent } from '../index';
|
|
|
4
4
|
|
|
5
5
|
const slug = 'nettoyeur-metadonnees-exif-supprimer-gps-confidentialite-photo';
|
|
6
6
|
const title = 'Nettoyeur de Métadonnées EXIF: Supprimez le GPS et les Données Cachées';
|
|
7
|
-
const description = 'Outil en ligne gratuit pour effacer les métadonnées EXIF, les coordonnées GPS et les caractéristiques de l\'appareil de vos images avant de les partager. 100 % confidentiel
|
|
7
|
+
const description = 'Outil en ligne gratuit pour effacer les métadonnées EXIF, les coordonnées GPS et les caractéristiques de l\'appareil de vos images avant de les partager. 100 % confidentiel: fonctionne sans téléversement.';
|
|
8
8
|
|
|
9
9
|
const ui: ExifCleanerUI = {
|
|
10
10
|
dropTitle: "Faites glisser votre image ici",
|
|
@@ -97,7 +97,7 @@ const seo: ExifCleanerLocaleContent['seo'] = [
|
|
|
97
97
|
'<strong>Données de Copyright :</strong> Photographe, droits d\'auteur et notes personnelles.'
|
|
98
98
|
] },
|
|
99
99
|
|
|
100
|
-
{ type: 'title', text: 'Risques de Sécurité Réels
|
|
100
|
+
{ type: 'title', text: 'Risques de Sécurité Réels: Cas d\'Utilisation', level: 3 },
|
|
101
101
|
{ type: 'comparative', items: [
|
|
102
102
|
{
|
|
103
103
|
title: 'Photographes Professionnels',
|
|
@@ -111,7 +111,7 @@ const seo: ExifCleanerLocaleContent['seo'] = [
|
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
113
|
title: 'Parents et Influenceurs',
|
|
114
|
-
description: 'Danger extrême
|
|
114
|
+
description: 'Danger extrême: localisation des enfants en temps réel',
|
|
115
115
|
icon: 'mdi:alert',
|
|
116
116
|
points: [
|
|
117
117
|
'Les prédateurs suivent les emplacements via l\'OSINT',
|
|
@@ -180,14 +180,14 @@ const seo: ExifCleanerLocaleContent['seo'] = [
|
|
|
180
180
|
}
|
|
181
181
|
], proTitle: 'Avantages Clés', conTitle: 'Limitations' },
|
|
182
182
|
|
|
183
|
-
{ type: 'tip', title: 'Conseil de Sécurité Numérique', html: '<strong>Nettoyez vos photos AVANT de les publier</strong> sur n\'importe quel réseau social. Même si vous supprimez une publication, les métadonnées ont pu être indexées par des moteurs de recherche ou des archives. Mieux vaut prévenir que guérir. Prenez l\'habitude
|
|
183
|
+
{ type: 'tip', title: 'Conseil de Sécurité Numérique', html: '<strong>Nettoyez vos photos AVANT de les publier</strong> sur n\'importe quel réseau social. Même si vous supprimez une publication, les métadonnées ont pu être indexées par des moteurs de recherche ou des archives. Mieux vaut prévenir que guérir. Prenez l\'habitude: <br><br><em>Photo → Nettoyer EXIF → Publier</em>' },
|
|
184
184
|
|
|
185
|
-
{ type: 'diagnostic', variant: 'warning', title: 'Risques Réels sans Nettoyage', icon: 'mdi:alert-circle', badge: 'Sécurité Critique', html: '<strong>Cas documentés :</strong><br>- Parents publiant des photos d\'enfants - les prédateurs ont suivi le GPS<br>- Photographes voyageurs - maisons cambriolées pendant leur absence<br>- Influenceurs - lieux de résidence identifiés par des fans obsessifs<br><br>Ce n\'est pas de la paranoïa
|
|
185
|
+
{ type: 'diagnostic', variant: 'warning', title: 'Risques Réels sans Nettoyage', icon: 'mdi:alert-circle', badge: 'Sécurité Critique', html: '<strong>Cas documentés :</strong><br>- Parents publiant des photos d\'enfants - les prédateurs ont suivi le GPS<br>- Photographes voyageurs - maisons cambriolées pendant leur absence<br>- Influenceurs - lieux de résidence identifiés par des fans obsessifs<br><br>Ce n\'est pas de la paranoïa: c\'est une hygiène numérique de base en 2026.' },
|
|
186
186
|
|
|
187
187
|
{ type: 'glossary', items: [
|
|
188
188
|
{
|
|
189
189
|
term: 'EXIF',
|
|
190
|
-
definition: 'Exchangeable Image File Format. Norme qui stocke des métadonnées techniques dans les fichiers image
|
|
190
|
+
definition: 'Exchangeable Image File Format. Norme qui stocke des métadonnées techniques dans les fichiers image: GPS, données d\'appareil, réglages d\'exposition. Présent dans environ 90 % des photos numériques sans intention de l\'utilisateur.'
|
|
191
191
|
},
|
|
192
192
|
{
|
|
193
193
|
term: 'Coordonnées GPS',
|
|
@@ -195,7 +195,7 @@ const seo: ExifCleanerLocaleContent['seo'] = [
|
|
|
195
195
|
},
|
|
196
196
|
{
|
|
197
197
|
term: 'IPTC',
|
|
198
|
-
definition: 'International Press Telecommunications Council. Métadonnées de publication lisibles
|
|
198
|
+
definition: 'International Press Telecommunications Council. Métadonnées de publication lisibles: copyright, auteur, mots-clés, description. Norme en photographie professionnelle.'
|
|
199
199
|
},
|
|
200
200
|
{
|
|
201
201
|
term: 'XMP',
|
|
@@ -207,14 +207,14 @@ const seo: ExifCleanerLocaleContent['seo'] = [
|
|
|
207
207
|
},
|
|
208
208
|
{
|
|
209
209
|
term: 'Anonymisation Numérique',
|
|
210
|
-
definition: 'Processus de suppression ou d\'offuscation des informations identifiables
|
|
210
|
+
definition: 'Processus de suppression ou d\'offuscation des informations identifiables: localisation, appareil, modèles de comportement. Essentiel pour la vie privée en ligne.'
|
|
211
211
|
}
|
|
212
212
|
] },
|
|
213
213
|
|
|
214
|
-
{ type: 'message', title: 'Votre Vie Privée est votre Responsabilité', ariaLabel: 'Informations sur la confidentialité et les droits des données', html: 'Nous ne stockons, ne traitons ni ne partageons vos images. <strong>Vous avez le contrôle total.</strong> Toutes les opérations se déroulent exclusivement dans votre navigateur. Lorsque vous fermez cet onglet, aucune trace de votre activité ne subsiste. Voici comment protéger votre vie privée sur internet
|
|
214
|
+
{ type: 'message', title: 'Votre Vie Privée est votre Responsabilité', ariaLabel: 'Informations sur la confidentialité et les droits des données', html: 'Nous ne stockons, ne traitons ni ne partageons vos images. <strong>Vous avez le contrôle total.</strong> Toutes les opérations se déroulent exclusivement dans votre navigateur. Lorsque vous fermez cet onglet, aucune trace de votre activité ne subsiste. Voici comment protéger votre vie privée sur internet: des outils qui respectent vos données.' },
|
|
215
215
|
|
|
216
|
-
{ type: 'title', text: 'Conclusion
|
|
217
|
-
{ type: 'paragraph', html: 'Protéger votre identité numérique commence par de petits détails. Nettoyer vos photos avant de les publier est une <strong>habitude d\'hygiène numérique essentielle</strong> en 2026. Cela ne protège pas seulement votre position
|
|
216
|
+
{ type: 'title', text: 'Conclusion: Partagez sans Traces', level: 3 },
|
|
217
|
+
{ type: 'paragraph', html: 'Protéger votre identité numérique commence par de petits détails. Nettoyer vos photos avant de les publier est une <strong>habitude d\'hygiène numérique essentielle</strong> en 2026. Cela ne protège pas seulement votre position: cela protège votre famille, vos biens et votre vie privée professionnelle. Une photo apparemment innocente peut en dire plus sur vous que vous ne l\'auriez jamais imaginé.' }
|
|
218
218
|
];
|
|
219
219
|
|
|
220
220
|
const faqSchema: WithContext<FAQPage> = {
|
|
@@ -39,11 +39,11 @@ const faq: ExifCleanerLocaleContent['faq'] = [
|
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
question: "Jakie konkretnie dane usuwa to narzędzie?",
|
|
42
|
-
answer: "Usuwa wszystkie tagi EXIF (GPS, marka aparatu, numer seryjny), IPTC (prawa autorskie, autor) oraz XMP (historia edycji). Twoje zdjęcie staje się
|
|
42
|
+
answer: "Usuwa wszystkie tagi EXIF (GPS, marka aparatu, numer seryjny), IPTC (prawa autorskie, autor) oraz XMP (historia edycji). Twoje zdjęcie staje się \"czyste\", zachowując jedynie wizualne piksele.",
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
question: "Czy zdjęcie traci na jakości podczas usuwania metadanych?",
|
|
46
|
-
answer: "Nie. Usuwamy jedynie techniczny
|
|
46
|
+
answer: "Nie. Usuwamy jedynie techniczny \"nagłówek\" danych pliku. Dane obrazu (piksele) pozostają identyczne, więc jakość wizualna nie zmienia się w ogóle.",
|
|
47
47
|
},
|
|
48
48
|
];
|
|
49
49
|
|
|
@@ -54,7 +54,7 @@ const howTo: ExifCleanerLocaleContent['howTo'] = [
|
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
name: "Przeanalizuj bieżące dane",
|
|
57
|
-
text: "Narzędzie pokaże Ci, jakie wrażliwe informacje wykryło (np.
|
|
57
|
+
text: "Narzędzie pokaże Ci, jakie wrażliwe informacje wykryło (np. \"Wykryto współrzędne GPS\").",
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
name: "Przetwórz i oczyść",
|
|
@@ -73,12 +73,12 @@ const seo: ExifCleanerLocaleContent['seo'] = [
|
|
|
73
73
|
items: [
|
|
74
74
|
'Natychmiast usuwaj współrzędne GPS i lokalizację ze swoich zdjęć',
|
|
75
75
|
'Usuwaj model aparatu, numer seryjny i informacje techniczne',
|
|
76
|
-
'Przetwarzanie w 100% oparte na przeglądarce
|
|
77
|
-
'Zachowuje jakość wizualną
|
|
76
|
+
'Przetwarzanie w 100% oparte na przeglądarce - Twoje zdjęcia nigdy nie opuszczają urządzenia',
|
|
77
|
+
'Zachowuje jakość wizualną - usuwane są tylko ukryte dane'
|
|
78
78
|
]
|
|
79
79
|
},
|
|
80
80
|
{ type: 'title', text: 'Kompletny przewodnik po prywatności i metadanych EXIF w fotografii cyfrowej', level: 2 },
|
|
81
|
-
{ type: 'paragraph', html: 'Czy kiedykolwiek zastanawiałeś się, jak wiele danych osobowych udostępniasz, przesyłając zdjęcie do mediów społecznościowych? Metadane EXIF są jak <strong>niewidzialny odcisk palca</strong>, który może ujawnić wszystko
|
|
81
|
+
{ type: 'paragraph', html: 'Czy kiedykolwiek zastanawiałeś się, jak wiele danych osobowych udostępniasz, przesyłając zdjęcie do mediów społecznościowych? Metadane EXIF są jak <strong>niewidzialny odcisk palca</strong>, który może ujawnić wszystko - od dokładnej lokalizacji Twojego domu po cenę Twojego sprzętu fotograficznego. Ten przewodnik wyjaśnia, jak skutecznie chronić swoją prywatność.' },
|
|
82
82
|
|
|
83
83
|
{ type: 'stats', items: [
|
|
84
84
|
{ value: '100%', label: 'Prywatność - Przetwarzanie Lokalne', icon: 'mdi:shield-check' },
|
|
@@ -31,7 +31,7 @@ const ui: ExifCleanerUI = {
|
|
|
31
31
|
const faq: ExifCleanerLocaleContent['faq'] = [
|
|
32
32
|
{
|
|
33
33
|
question: "Что такое метаданные EXIF?",
|
|
34
|
-
answer: "EXIF (Exchangeable Image File Format)
|
|
34
|
+
answer: "EXIF (Exchangeable Image File Format) - это скрытая информация, которую ваша камера или телефон сохраняют внутри каждой фотографии. Она включает точную дату, модель устройства, настройки съёмки (ISO, диафрагма) и, что критически важно, GPS-координаты места, где было сделано фото.",
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
question: "Безопасно ли использовать этот онлайн-инструмент?",
|
|
@@ -39,11 +39,11 @@ const faq: ExifCleanerLocaleContent['faq'] = [
|
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
question: "Какие именно данные удаляет очиститель?",
|
|
42
|
-
answer: "Он стирает все теги EXIF (GPS, марка камеры, серийный номер), IPTC (авторские права, автор) и XMP (история редактирования). Ваше изображение становится
|
|
42
|
+
answer: "Он стирает все теги EXIF (GPS, марка камеры, серийный номер), IPTC (авторские права, автор) и XMP (история редактирования). Ваше изображение становится \"чистым\", сохраняя только визуальные пиксели.",
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
question: "Теряет ли изображение в качестве при очистке метаданных?",
|
|
46
|
-
answer: "Нет. Мы удаляем только технический
|
|
46
|
+
answer: "Нет. Мы удаляем только технический \"заголовок\" файла. Данные изображения (пиксели) остаются идентичными, поэтому визуальное качество никак не страдает.",
|
|
47
47
|
},
|
|
48
48
|
];
|
|
49
49
|
|
|
@@ -54,7 +54,7 @@ const howTo: ExifCleanerLocaleContent['howTo'] = [
|
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
name: "Проанализируйте текущие данные",
|
|
57
|
-
text: "Инструмент покажет вам, какая конфиденциальная информация была обнаружена (например,
|
|
57
|
+
text: "Инструмент покажет вам, какая конфиденциальная информация была обнаружена (например, \"Обнаружены GPS координаты\").",
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
name: "Обработка и очистка",
|
|
@@ -73,15 +73,15 @@ const seo: ExifCleanerLocaleContent['seo'] = [
|
|
|
73
73
|
items: [
|
|
74
74
|
'Мгновенно удаляйте GPS-координаты и местоположение из ваших фото',
|
|
75
75
|
'Стирайте модель камеры, серийный номер и техническую информацию',
|
|
76
|
-
'100% браузерная обработка
|
|
77
|
-
'Сохранение визуального качества
|
|
76
|
+
'100% браузерная обработка - ваши изображения не покидают устройство',
|
|
77
|
+
'Сохранение визуального качества - удаляются только скрытые данные'
|
|
78
78
|
]
|
|
79
79
|
},
|
|
80
80
|
{ type: 'title', text: 'Полное руководство по конфиденциальности и метаданным EXIF в цифровой фотографии', level: 2 },
|
|
81
81
|
{ type: 'paragraph', html: 'Задумывались ли вы когда-нибудь, каким объемом личной информации вы делитесь, загружая фото в соцсети? Метаданные EXIF похожи на <strong>невидимый отпечаток пальца</strong>, который может раскрыть всё: от вашего точного домашнего адреса до стоимости вашей фототехники. Это руководство объясняет, как эффективно защитить свою приватность.' },
|
|
82
82
|
|
|
83
83
|
{ type: 'stats', items: [
|
|
84
|
-
{ value: '100%', label: 'Приватность
|
|
84
|
+
{ value: '100%', label: 'Приватность - локальная обработка', icon: 'mdi:shield-check' },
|
|
85
85
|
{ value: '0%', label: 'Данных на серверах', icon: 'mdi:database' },
|
|
86
86
|
{ value: 'Мгновенно', label: 'Удаление метаданных', icon: 'mdi:lightning-bolt' }
|
|
87
87
|
], columns: 3 },
|
|
@@ -163,26 +163,26 @@ const seo: ExifCleanerLocaleContent['seo'] = [
|
|
|
163
163
|
|
|
164
164
|
{ type: 'proscons', items: [
|
|
165
165
|
{
|
|
166
|
-
pro: 'Полная конфиденциальность
|
|
166
|
+
pro: 'Полная конфиденциальность - обработка 100% в браузере',
|
|
167
167
|
con: 'Требуется современный браузер с поддержкой JavaScript'
|
|
168
168
|
},
|
|
169
169
|
{
|
|
170
|
-
pro: 'Мгновенно
|
|
170
|
+
pro: 'Мгновенно - очистка одного фото занимает менее 1 секунды',
|
|
171
171
|
con: 'Обработка больших фото может быть медленной на старых устройствах'
|
|
172
172
|
},
|
|
173
173
|
{
|
|
174
|
-
pro: 'Без потери качества
|
|
174
|
+
pro: 'Без потери качества - удаляются только данные, а не пиксели',
|
|
175
175
|
con: 'Не редактирует само изображение (обрезка, поворот и т.д.)'
|
|
176
176
|
},
|
|
177
177
|
{
|
|
178
|
-
pro: 'Полностью бесплатно и без лимитов
|
|
178
|
+
pro: 'Полностью бесплатно и без лимитов - любое количество фото',
|
|
179
179
|
con: 'Нет премиум-поддержки или облачного хранилища'
|
|
180
180
|
}
|
|
181
181
|
], proTitle: 'Основные преимущества', conTitle: 'Ограничения' },
|
|
182
182
|
|
|
183
183
|
{ type: 'tip', title: 'Совет по цифровой безопасности', html: '<strong>Очищайте фото ДО публикации</strong> в любой соцсети. Даже если вы удалите пост, метаданные могут быть проиндексированы поисковиками. Профилактика лучше лечения. Сделайте это привычкой:<br><br><em>Фото → Очистка EXIF → Пост</em>' },
|
|
184
184
|
|
|
185
|
-
{ type: 'diagnostic', variant: 'warning', title: 'Реальные риски игнорирования очистки', icon: 'mdi:alert-circle', badge: 'Критическая безопасность', html: '<strong>Документированные случаи:</strong><br>- Родители постили фото детей
|
|
185
|
+
{ type: 'diagnostic', variant: 'warning', title: 'Реальные риски игнорирования очистки', icon: 'mdi:alert-circle', badge: 'Критическая безопасность', html: '<strong>Документированные случаи:</strong><br>- Родители постили фото детей - преступники вычисляли GPS<br>- Фотографы-путешественники - дома грабили в их отсутствие<br>- Блогеры - места жительства определялись навязчивыми фанатами<br><br>Это не паранойя: это базовая цифровая гигиена в 2026 году.' },
|
|
186
186
|
|
|
187
187
|
{ type: 'glossary', items: [
|
|
188
188
|
{
|
|
@@ -211,10 +211,10 @@ const seo: ExifCleanerLocaleContent['seo'] = [
|
|
|
211
211
|
}
|
|
212
212
|
] },
|
|
213
213
|
|
|
214
|
-
{ type: 'message', title: 'Ваша
|
|
214
|
+
{ type: 'message', title: 'Ваша приватность: ваша ответственность', ariaLabel: 'Информация о конфиденциальности и правах на данные', html: 'Мы не храним, не обрабатываем и не передаем ваши изображения. <strong>У вас полный контроль.</strong> Все операции происходят исключительно в вашем браузере. Когда вы закрываете вкладку, никаких следов вашей активности не остается. Именно так защищается приватность в интернете: инструментами, которые уважают ваши данные.' },
|
|
215
215
|
|
|
216
216
|
{ type: 'title', text: 'Заключение: делитесь, не оставляя следов', level: 3 },
|
|
217
|
-
{ type: 'paragraph', html: 'Защита вашей цифровой личности начинается с мелочей. Очистка фото перед публикацией
|
|
217
|
+
{ type: 'paragraph', html: 'Защита вашей цифровой личности начинается с мелочей. Очистка фото перед публикацией - это <strong>необходимая привычка цифровой гигиены</strong> в 2026 году. Она защищает не только ваше местоположение: она защищает вашу семью, ваше имущество и вашу профессиональную тайну. Невинное на вид фото может рассказать о вас больше, чем вы можете себе представить.' }
|
|
218
218
|
];
|
|
219
219
|
|
|
220
220
|
const faqSchema: WithContext<FAQPage> = {
|
|
@@ -39,11 +39,11 @@ const faq: ExifCleanerLocaleContent['faq'] = [
|
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
question: "清除工具具体删除了哪些数据?",
|
|
42
|
-
answer: "它擦除所有 EXIF 标签(GPS、相机品牌、序列号)、IPTC(版权、作者)和 XMP
|
|
42
|
+
answer: "它擦除所有 EXIF 标签(GPS、相机品牌、序列号)、IPTC(版权、作者)和 XMP(编辑历史)。您的图像变得\"干净\",仅保留视觉像素。",
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
question: "清除元数据会损失画质吗?",
|
|
46
|
-
answer: "
|
|
46
|
+
answer: "不会。我们只删除文件的技术数据\"页眉\"。图像数据(像素)保持一致,因此视觉质量完全不受影响。",
|
|
47
47
|
},
|
|
48
48
|
];
|
|
49
49
|
|
|
@@ -54,7 +54,7 @@ const howTo: ExifCleanerLocaleContent['howTo'] = [
|
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
name: "分析当前数据",
|
|
57
|
-
text: "
|
|
57
|
+
text: "工具将向您显示它检测到的敏感信息(例如,\"已检测到 GPS 坐标\")。",
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
name: "处理并清除",
|
|
@@ -89,12 +89,14 @@ const { ui } = Astro.props;
|
|
|
89
89
|
<div class="ic-inline-editor" style="display:none">
|
|
90
90
|
<div class="ic-editor-controls">
|
|
91
91
|
<div class="ic-editor-group">
|
|
92
|
-
<label>{ui.qualityLabel}: <span class="ic-local-q-val">80</span
|
|
93
|
-
|
|
92
|
+
<label>{ui.qualityLabel}: <span class="ic-local-q-val">80</span>%
|
|
93
|
+
<input type="range" class="ic-local-quality" min="10" max="100" value="80" />
|
|
94
|
+
</label>
|
|
94
95
|
</div>
|
|
95
96
|
<div class="ic-editor-group">
|
|
96
|
-
<label>{ui.maxWidthLabel}
|
|
97
|
-
|
|
97
|
+
<label>{ui.maxWidthLabel}:
|
|
98
|
+
<input type="number" class="ic-local-width" placeholder="Original" />
|
|
99
|
+
</label>
|
|
98
100
|
</div>
|
|
99
101
|
</div>
|
|
100
102
|
<button class="ic-editor-close">{ui.closeBtn}</button>
|