@jjlmoya/utils-social 1.13.0 → 1.15.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/fr.ts +2 -2
- package/src/category/i18n/ru.ts +1 -1
- package/src/env.d.ts +5 -0
- package/src/layouts/PreviewLayout.astro +7 -2
- package/src/pages/[locale]/[slug].astro +28 -12
- package/src/tests/diacritics_density.test.ts +118 -0
- package/src/tests/inverted_punctuation.test.ts +84 -0
- package/src/tests/locale_completeness.test.ts +4 -14
- 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/tests/shared-test-helpers.ts +56 -0
- package/src/tests/tool_exports.test.ts +34 -0
- package/src/tool/redditFormatter/bibliography.astro +2 -10
- package/src/tool/redditFormatter/bibliography.ts +12 -0
- package/src/tool/redditFormatter/i18n/de.ts +3 -13
- package/src/tool/redditFormatter/i18n/en.ts +3 -13
- package/src/tool/redditFormatter/i18n/es.ts +3 -13
- package/src/tool/redditFormatter/i18n/fr.ts +5 -15
- package/src/tool/redditFormatter/i18n/id.ts +3 -13
- package/src/tool/redditFormatter/i18n/it.ts +3 -13
- package/src/tool/redditFormatter/i18n/ja.ts +3 -13
- package/src/tool/redditFormatter/i18n/ko.ts +3 -13
- package/src/tool/redditFormatter/i18n/nl.ts +3 -13
- package/src/tool/redditFormatter/i18n/pl.ts +7 -17
- package/src/tool/redditFormatter/i18n/pt.ts +3 -13
- package/src/tool/redditFormatter/i18n/ru.ts +5 -15
- package/src/tool/redditFormatter/i18n/sv.ts +3 -13
- package/src/tool/redditFormatter/i18n/tr.ts +3 -13
- package/src/tool/redditFormatter/i18n/zh.ts +4 -14
- package/src/tool/redditFormatter/seo.astro +2 -1
- package/src/tool/safeZones/bibliography.astro +2 -10
- package/src/tool/safeZones/bibliography.ts +20 -0
- package/src/tool/safeZones/component.astro +1 -1
- package/src/tool/safeZones/i18n/de.ts +5 -23
- package/src/tool/safeZones/i18n/en.ts +5 -23
- package/src/tool/safeZones/i18n/es.ts +3 -21
- package/src/tool/safeZones/i18n/fr.ts +14 -32
- package/src/tool/safeZones/i18n/id.ts +5 -23
- package/src/tool/safeZones/i18n/it.ts +9 -27
- package/src/tool/safeZones/i18n/ja.ts +3 -21
- package/src/tool/safeZones/i18n/ko.ts +3 -21
- package/src/tool/safeZones/i18n/nl.ts +5 -23
- package/src/tool/safeZones/i18n/pl.ts +10 -28
- package/src/tool/safeZones/i18n/pt.ts +5 -23
- package/src/tool/safeZones/i18n/ru.ts +12 -30
- package/src/tool/safeZones/i18n/sv.ts +5 -23
- package/src/tool/safeZones/i18n/tr.ts +3 -21
- package/src/tool/safeZones/i18n/zh.ts +7 -25
- package/src/tool/safeZones/seo.astro +2 -1
- package/src/tool/socialImageResizer/bibliography.astro +2 -10
- package/src/tool/socialImageResizer/bibliography.ts +12 -0
- package/src/tool/socialImageResizer/component.astro +2 -2
- package/src/tool/socialImageResizer/i18n/de.ts +8 -18
- package/src/tool/socialImageResizer/i18n/en.ts +11 -21
- package/src/tool/socialImageResizer/i18n/es.ts +10 -20
- package/src/tool/socialImageResizer/i18n/fr.ts +14 -24
- package/src/tool/socialImageResizer/i18n/id.ts +11 -21
- package/src/tool/socialImageResizer/i18n/it.ts +19 -29
- package/src/tool/socialImageResizer/i18n/ja.ts +10 -20
- package/src/tool/socialImageResizer/i18n/ko.ts +10 -20
- package/src/tool/socialImageResizer/i18n/nl.ts +11 -21
- package/src/tool/socialImageResizer/i18n/pl.ts +12 -22
- package/src/tool/socialImageResizer/i18n/pt.ts +11 -21
- package/src/tool/socialImageResizer/i18n/ru.ts +17 -27
- package/src/tool/socialImageResizer/i18n/sv.ts +11 -21
- package/src/tool/socialImageResizer/i18n/tr.ts +10 -20
- package/src/tool/socialImageResizer/i18n/zh.ts +10 -20
- package/src/tool/socialImageResizer/seo.astro +2 -1
- package/src/tool/socialValueCalculator/bibliography.astro +2 -10
- package/src/tool/socialValueCalculator/bibliography.ts +16 -0
- package/src/tool/socialValueCalculator/component.astro +1 -2
- package/src/tool/socialValueCalculator/i18n/de.ts +5 -19
- package/src/tool/socialValueCalculator/i18n/en.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/es.ts +5 -19
- package/src/tool/socialValueCalculator/i18n/fr.ts +9 -23
- package/src/tool/socialValueCalculator/i18n/id.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/it.ts +17 -31
- package/src/tool/socialValueCalculator/i18n/ja.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/ko.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/nl.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/pl.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/pt.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/ru.ts +10 -24
- package/src/tool/socialValueCalculator/i18n/sv.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/tr.ts +4 -18
- package/src/tool/socialValueCalculator/i18n/zh.ts +7 -21
- package/src/tool/socialValueCalculator/seo.astro +2 -1
- package/src/tool/tinderPhotoOptimizer/bibliography.astro +2 -10
- package/src/tool/tinderPhotoOptimizer/bibliography.ts +12 -0
- package/src/tool/tinderPhotoOptimizer/component.astro +23 -6
- package/src/tool/tinderPhotoOptimizer/i18n/de.ts +6 -16
- package/src/tool/tinderPhotoOptimizer/i18n/en.ts +4 -14
- package/src/tool/tinderPhotoOptimizer/i18n/es.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/fr.ts +28 -38
- package/src/tool/tinderPhotoOptimizer/i18n/id.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/it.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/ja.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/ko.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/nl.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/pl.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/pt.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/ru.ts +12 -22
- package/src/tool/tinderPhotoOptimizer/i18n/sv.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/tr.ts +3 -13
- package/src/tool/tinderPhotoOptimizer/i18n/zh.ts +5 -15
- package/src/tool/tinderPhotoOptimizer/seo.astro +2 -1
- package/src/tool/youtubeThumbnail/bibliography.astro +2 -10
- package/src/tool/youtubeThumbnail/bibliography.ts +16 -0
- package/src/tool/youtubeThumbnail/component.astro +1 -0
- package/src/tool/youtubeThumbnail/i18n/de.ts +6 -20
- package/src/tool/youtubeThumbnail/i18n/en.ts +4 -18
- package/src/tool/youtubeThumbnail/i18n/es.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/fr.ts +6 -20
- package/src/tool/youtubeThumbnail/i18n/id.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/it.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/ja.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/ko.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/nl.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/pl.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/pt.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/ru.ts +6 -20
- package/src/tool/youtubeThumbnail/i18n/sv.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/tr.ts +3 -17
- package/src/tool/youtubeThumbnail/i18n/zh.ts +5 -19
- package/src/tool/youtubeThumbnail/seo.astro +2 -1
- package/src/tool/youtubeThumbnailPreviewer/bibliography.astro +2 -10
- package/src/tool/youtubeThumbnailPreviewer/bibliography.ts +16 -0
- package/src/tool/youtubeThumbnailPreviewer/i18n/de.ts +11 -25
- package/src/tool/youtubeThumbnailPreviewer/i18n/en.ts +5 -19
- package/src/tool/youtubeThumbnailPreviewer/i18n/es.ts +3 -17
- package/src/tool/youtubeThumbnailPreviewer/i18n/fr.ts +12 -26
- package/src/tool/youtubeThumbnailPreviewer/i18n/id.ts +5 -19
- package/src/tool/youtubeThumbnailPreviewer/i18n/it.ts +24 -38
- package/src/tool/youtubeThumbnailPreviewer/i18n/ja.ts +3 -17
- package/src/tool/youtubeThumbnailPreviewer/i18n/ko.ts +3 -17
- package/src/tool/youtubeThumbnailPreviewer/i18n/nl.ts +7 -21
- package/src/tool/youtubeThumbnailPreviewer/i18n/pl.ts +10 -24
- package/src/tool/youtubeThumbnailPreviewer/i18n/pt.ts +3 -17
- package/src/tool/youtubeThumbnailPreviewer/i18n/ru.ts +14 -28
- package/src/tool/youtubeThumbnailPreviewer/i18n/sv.ts +5 -19
- package/src/tool/youtubeThumbnailPreviewer/i18n/tr.ts +3 -17
- package/src/tool/youtubeThumbnailPreviewer/i18n/zh.ts +13 -27
- package/src/tool/youtubeThumbnailPreviewer/seo.astro +2 -1
- package/src/types.ts +0 -2
|
@@ -202,11 +202,11 @@ const t = (ui ?? {}) as TinderPhotoOptimizerUI;
|
|
|
202
202
|
<div class="tfo-panel">
|
|
203
203
|
<h3>{t.panelManual}</h3>
|
|
204
204
|
<div class="tfo-control-group">
|
|
205
|
-
<label>{t.labelZoom} <span>1.0x</span></label>
|
|
205
|
+
<label for="zoom-slider">{t.labelZoom} <span>1.0x</span></label>
|
|
206
206
|
<input type="range" id="zoom-slider" min="1" max="3" step="0.1" value="1" />
|
|
207
207
|
</div>
|
|
208
208
|
<div class="tfo-control-group">
|
|
209
|
-
<label>{t.labelBrightness} <span>100%</span></label>
|
|
209
|
+
<label for="brightness-slider">{t.labelBrightness} <span>100%</span></label>
|
|
210
210
|
<input type="range" id="brightness-slider" min="50" max="150" step="1" value="100" />
|
|
211
211
|
</div>
|
|
212
212
|
</div>
|
|
@@ -310,6 +310,8 @@ const t = (ui ?? {}) as TinderPhotoOptimizerUI;
|
|
|
310
310
|
<script>
|
|
311
311
|
import { TinderOptimizerEngine } from './logic';
|
|
312
312
|
|
|
313
|
+
const getRect = (el: Element) => el.getBoundingClientRect();
|
|
314
|
+
|
|
313
315
|
class TinderOptimizerUI {
|
|
314
316
|
private engine: TinderOptimizerEngine;
|
|
315
317
|
private canvas: HTMLCanvasElement;
|
|
@@ -334,6 +336,10 @@ const t = (ui ?? {}) as TinderPhotoOptimizerUI;
|
|
|
334
336
|
private isSelecting = false;
|
|
335
337
|
private selectionRect = { x: 0, y: 0, w: 0, h: 0 };
|
|
336
338
|
private lastPos = { x: 0, y: 0 };
|
|
339
|
+
private cachedClientWidth = 0;
|
|
340
|
+
private cachedClientHeight = 0;
|
|
341
|
+
private cachedRect = { left: 0, top: 0, width: 1, height: 1 };
|
|
342
|
+
private resizeObserver: ResizeObserver | null = null;
|
|
337
343
|
|
|
338
344
|
constructor() {
|
|
339
345
|
this.canvas = document.getElementById('editor-canvas') as HTMLCanvasElement;
|
|
@@ -422,6 +428,17 @@ const t = (ui ?? {}) as TinderPhotoOptimizerUI;
|
|
|
422
428
|
this.setupSliders();
|
|
423
429
|
this.setupToggles();
|
|
424
430
|
this.setupButtons();
|
|
431
|
+
this.cachedClientWidth = 1;
|
|
432
|
+
this.cachedClientHeight = 1;
|
|
433
|
+
this.resizeObserver = new ResizeObserver((entries) => {
|
|
434
|
+
for (const entry of entries) {
|
|
435
|
+
this.cachedClientWidth = entry.contentRect.width || 1;
|
|
436
|
+
this.cachedClientHeight = entry.contentRect.height || 1;
|
|
437
|
+
const r = getRect(entry.target);
|
|
438
|
+
this.cachedRect = { left: r.left, top: r.top, width: entry.contentRect.width || 1, height: entry.contentRect.height || 1 };
|
|
439
|
+
}
|
|
440
|
+
});
|
|
441
|
+
this.resizeObserver.observe(this.canvas);
|
|
425
442
|
}
|
|
426
443
|
|
|
427
444
|
private reset() {
|
|
@@ -480,7 +497,7 @@ const t = (ui ?? {}) as TinderPhotoOptimizerUI;
|
|
|
480
497
|
private onStart(e: MouseEvent | TouchEvent) {
|
|
481
498
|
if (e instanceof TouchEvent) e.preventDefault();
|
|
482
499
|
const { x: cx, y: cy } = this.getClientPos(e);
|
|
483
|
-
const rect = this.
|
|
500
|
+
const rect = this.cachedRect;
|
|
484
501
|
const x = (cx - rect.left) * (this.canvas.width / rect.width);
|
|
485
502
|
const y = (cy - rect.top) * (this.canvas.height / rect.height);
|
|
486
503
|
this.initInteraction(x, y, cx, cy);
|
|
@@ -503,15 +520,15 @@ const t = (ui ?? {}) as TinderPhotoOptimizerUI;
|
|
|
503
520
|
}
|
|
504
521
|
|
|
505
522
|
private handleSelectionMove(clientX: number, clientY: number) {
|
|
506
|
-
const rect = this.
|
|
523
|
+
const rect = this.cachedRect;
|
|
507
524
|
this.selectionRect.w = (clientX - rect.left) * (this.canvas.width / rect.width) - this.selectionRect.x;
|
|
508
525
|
this.selectionRect.h = (clientY - rect.top) * (this.canvas.height / rect.height) - this.selectionRect.y;
|
|
509
526
|
this.draw();
|
|
510
527
|
}
|
|
511
528
|
|
|
512
529
|
private handleDragMove(clientX: number, clientY: number) {
|
|
513
|
-
const dx = (clientX - this.lastPos.x) * (this.canvas.width / this.
|
|
514
|
-
const dy = (clientY - this.lastPos.y) * (this.canvas.height / this.
|
|
530
|
+
const dx = (clientX - this.lastPos.x) * (this.canvas.width / this.cachedClientWidth);
|
|
531
|
+
const dy = (clientY - this.lastPos.y) * (this.canvas.height / this.cachedClientHeight);
|
|
515
532
|
const offset = this.engine.offset;
|
|
516
533
|
this.engine.updateState(parseFloat(this.zoomSlider.value), { x: offset.x + dx, y: offset.y + dy }, parseInt(this.brightnessSlider.value));
|
|
517
534
|
this.lastPos = { x: clientX, y: clientY };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { TinderPhotoOptimizerUI } from '../ui';
|
|
@@ -11,7 +12,7 @@ const faqData = [
|
|
|
11
12
|
{
|
|
12
13
|
question: 'Wie verbessert dieses Tool meine Tinder-Matches?',
|
|
13
14
|
answer:
|
|
14
|
-
'Das Tool analysiert wichtige technische Faktoren: das Verhältnis der Gesichtsgröße (ideal 30
|
|
15
|
+
'Das Tool analysiert wichtige technische Faktoren: das Verhältnis der Gesichtsgröße (ideal 30-50 %), die Position der Augenlinie im Verhältnis zum oberen Drittel, die Abdeckung des Bildausschnitts und die Totzonen der Tinder-Benutzeroberfläche. Durch die Anpassung dieser Parameter projiziert Ihr Foto mehr Vertrauen und überwindet die visuellen Filter des Algorithmus.',
|
|
15
16
|
},
|
|
16
17
|
{
|
|
17
18
|
question: 'Ist es sicher, meine Fotos hier hochzuladen?',
|
|
@@ -26,7 +27,7 @@ const faqData = [
|
|
|
26
27
|
{
|
|
27
28
|
question: 'Warum wird ein Zoom von 1,2x empfohlen?',
|
|
28
29
|
answer:
|
|
29
|
-
'Frontkameras von Smartphones verwenden Weitwinkeloptiken (24 mm), die das Gesicht durch Tonnenverzerrung verzerren. Ein Zoom von 1,2x simuliert eine Brennweite von 50
|
|
30
|
+
'Frontkameras von Smartphones verwenden Weitwinkeloptiken (24 mm), die das Gesicht durch Tonnenverzerrung verzerren. Ein Zoom von 1,2x simuliert eine Brennweite von 50-85 mm, wodurch die Verzerrung eliminiert wird und natürlichere und attraktivere Gesichtsproportionen entstehen.',
|
|
30
31
|
},
|
|
31
32
|
];
|
|
32
33
|
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'Referenzen',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'face-api.js: JavaScript Face Recognition in the Browser',
|
|
96
|
-
url: 'https://github.com/justadudewhohacks/face-api.js',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'MDN Web Docs: Canvas API',
|
|
100
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -196,7 +186,7 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
196
186
|
{
|
|
197
187
|
type: 'tip',
|
|
198
188
|
title: 'Expertenrat',
|
|
199
|
-
html: '<p>Das erste Foto sollte IMMER ein klares Porträt ab den Schultern aufwärts sein. Heben Sie Ganzkörperfotos oder Aktivitätsfotos für die 3. oder 4. Position auf. Stellen Sie sicher, dass Ihr Blick beim ersten Eindruck frei von Hindernissen ist und Ihr Gesicht die optimale Größe (30
|
|
189
|
+
html: '<p>Das erste Foto sollte IMMER ein klares Porträt ab den Schultern aufwärts sein. Heben Sie Ganzkörperfotos oder Aktivitätsfotos für die 3. oder 4. Position auf. Stellen Sie sicher, dass Ihr Blick beim ersten Eindruck frei von Hindernissen ist und Ihr Gesicht die optimale Größe (30-50 %) hat.</p>',
|
|
200
190
|
},
|
|
201
191
|
{
|
|
202
192
|
type: 'title',
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { TinderPhotoOptimizerUI } from '../ui';
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'References',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'face-api.js: JavaScript Face Recognition in the Browser',
|
|
96
|
-
url: 'https://github.com/justadudewhohacks/face-api.js',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'MDN Web Docs: Canvas API',
|
|
100
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -140,7 +130,7 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
140
130
|
},
|
|
141
131
|
{
|
|
142
132
|
type: 'paragraph',
|
|
143
|
-
html: '<strong>Barrel Aberration:</strong> At less than one meter distance, a 24mm lens (standard on phones) expands the center of the image. This makes noses look bigger and faces rounder than they really are. Our <strong>1.2x Zoom</strong> recommendation is corrective: by applying a slight digital crop, you simulate a 50mm to 85mm focal length
|
|
133
|
+
html: '<strong>Barrel Aberration:</strong> At less than one meter distance, a 24mm lens (standard on phones) expands the center of the image. This makes noses look bigger and faces rounder than they really are. Our <strong>1.2x Zoom</strong> recommendation is corrective: by applying a slight digital crop, you simulate a 50mm to 85mm focal length - the golden focal length photographers use to slim the face and maintain real proportions.',
|
|
144
134
|
},
|
|
145
135
|
{
|
|
146
136
|
type: 'title',
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { TinderPhotoOptimizerUI } from '../ui';
|
|
@@ -24,7 +25,7 @@ const faqData = [
|
|
|
24
25
|
'Utiliza face-api.js para detectar 68 puntos de referencia facial, analizar la expresión (sonrisa, expresión seria), evaluar la posición de los ojos y medir la inclinación de la cabeza. Todo el análisis ocurre localmente en tu dispositivo.',
|
|
25
26
|
},
|
|
26
27
|
{
|
|
27
|
-
question: '¿Por qué recomienda el zoom al 1
|
|
28
|
+
question: '¿Por qué recomienda el zoom al 1,2x?',
|
|
28
29
|
answer:
|
|
29
30
|
'Las cámaras frontales de smartphone usan ópticas gran angular (24mm) que distorsionan el rostro con la aberración de barril. Un zoom de 1.2x simula una focal de 50-85mm, eliminando la distorsión y proporcionando proporciones faciales más naturales y atractivas.',
|
|
30
31
|
},
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
faqTitle: 'Preguntas Frecuentes',
|
|
91
91
|
faq: faqData,
|
|
92
|
-
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'face-api.js: JavaScript Face Recognition in the Browser',
|
|
96
|
-
url: 'https://github.com/justadudewhohacks/face-api.js',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'MDN Web Docs: Canvas API',
|
|
100
|
-
url: 'https://developer.mozilla.org/es/docs/Web/API/Canvas_API',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { TinderPhotoOptimizerUI } from '../ui';
|
|
4
5
|
|
|
5
6
|
const slug = 'optimiseur-photos-tinder';
|
|
6
|
-
const title = "Optimiseur de Photos pour Tinder
|
|
7
|
+
const title = "Optimiseur de Photos pour Tinder: Analyse de Visage et Composition";
|
|
7
8
|
const description =
|
|
8
9
|
"Optimisez vos photos pour Tinder avec une analyse algorithmique du visage. Simule l'interface 2026, analyse le cadrage scientifique et la ligne des yeux, exporte des portraits 9:16 parfaits pour maximiser vos matchs.";
|
|
9
10
|
|
|
@@ -11,7 +12,7 @@ const faqData = [
|
|
|
11
12
|
{
|
|
12
13
|
question: "Comment cet outil améliore-t-il mes matchs sur Tinder ?",
|
|
13
14
|
answer:
|
|
14
|
-
"L'outil analyse des facteurs techniques clés
|
|
15
|
+
"L'outil analyse des facteurs techniques clés: le ratio de taille du visage (idéal 30-50%), la position de la ligne des yeux par rapport au tiers supérieur, la couverture du cadre et les zones mortes de l'interface Tinder. En ajustant ces paramètres, votre photo projette plus de confiance et passe les filtres visuels de l'algorithme.",
|
|
15
16
|
},
|
|
16
17
|
{
|
|
17
18
|
question: "Est-il sûr de télécharger mes photos ici ?",
|
|
@@ -87,34 +88,23 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'Références',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'face-api.js: JavaScript Face Recognition in the Browser',
|
|
96
|
-
url: 'https://github.com/justadudewhohacks/face-api.js',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'MDN Web Docs: Canvas API',
|
|
100
|
-
url: 'https://developer.mozilla.org/fr/docs/Web/API/Canvas_API',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
106
96
|
{
|
|
107
97
|
type: 'title',
|
|
108
|
-
text: "Optimiseur de Photos pour Tinder
|
|
98
|
+
text: "Optimiseur de Photos pour Tinder: Le Guide Scientifique et Technique Définitif (2026)",
|
|
109
99
|
level: 2,
|
|
110
100
|
},
|
|
111
101
|
{
|
|
112
102
|
type: 'paragraph',
|
|
113
|
-
html: "Dans l'écosystème des rencontres numériques, votre profil Tinder est traité par deux algorithmes simultanément
|
|
103
|
+
html: "Dans l'écosystème des rencontres numériques, votre profil Tinder est traité par deux algorithmes simultanément: l'algorithme de vision avancée de la plateforme elle-même et le cerveau humain de l'utilisateur qui fait glisser. Notre outil intègre des principes de <strong>psychologie évolutive</strong>, de <strong>biométrie faciale</strong> et de <strong>traitement du signal numérique</strong> pour garantir que votre image projette une valeur sociale et un attrait technique maximum.",
|
|
114
104
|
},
|
|
115
105
|
{
|
|
116
106
|
type: 'title',
|
|
117
|
-
text: "La Psychologie de la Première Impression
|
|
107
|
+
text: "La Psychologie de la Première Impression: L'Effet des 1,2 Secondes",
|
|
118
108
|
level: 3,
|
|
119
109
|
},
|
|
120
110
|
{
|
|
@@ -131,7 +121,7 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
131
121
|
},
|
|
132
122
|
{
|
|
133
123
|
type: 'title',
|
|
134
|
-
text: "Analyse Technique de l'Objectif
|
|
124
|
+
text: "Analyse Technique de l'Objectif: Le Problème du Grand Angle",
|
|
135
125
|
level: 3,
|
|
136
126
|
},
|
|
137
127
|
{
|
|
@@ -140,11 +130,11 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
140
130
|
},
|
|
141
131
|
{
|
|
142
132
|
type: 'paragraph',
|
|
143
|
-
html: "<strong>L'Aberration en Barillet :</strong> À moins d'un mètre de distance, un objectif de 24mm (standard sur mobile) élargit le centre de l'image. Cela fait paraître les nez plus grands et le visage plus rond que dans la réalité. Notre recommandation de <strong>Zoom 1,2x</strong> est corrective
|
|
133
|
+
html: "<strong>L'Aberration en Barillet :</strong> À moins d'un mètre de distance, un objectif de 24mm (standard sur mobile) élargit le centre de l'image. Cela fait paraître les nez plus grands et le visage plus rond que dans la réalité. Notre recommandation de <strong>Zoom 1,2x</strong> est corrective: en appliquant un léger recadrage numérique, vous simulez une focale de 50mm à 85mm, la focale dorée que les photographes de mode utilisent pour affiner le visage et maintenir les proportions réelles.",
|
|
144
134
|
},
|
|
145
135
|
{
|
|
146
136
|
type: 'title',
|
|
147
|
-
text: "L'Interface Tinder
|
|
137
|
+
text: "L'Interface Tinder: La Science des Zones Mortes",
|
|
148
138
|
level: 3,
|
|
149
139
|
},
|
|
150
140
|
{
|
|
@@ -161,7 +151,7 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
161
151
|
},
|
|
162
152
|
{
|
|
163
153
|
type: 'title',
|
|
164
|
-
text: "Analyse Visuelle en Temps Réel
|
|
154
|
+
text: "Analyse Visuelle en Temps Réel: Décoder l'Algorithme",
|
|
165
155
|
level: 3,
|
|
166
156
|
},
|
|
167
157
|
{
|
|
@@ -205,7 +195,7 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
205
195
|
},
|
|
206
196
|
{
|
|
207
197
|
type: 'paragraph',
|
|
208
|
-
html: "Nous comprenons que vos photos sont privées. Cet optimiseur utilise la <strong>technologie Client-Side</strong
|
|
198
|
+
html: "Nous comprenons que vos photos sont privées. Cet optimiseur utilise la <strong>technologie Client-Side</strong>: les images sont traitées via un moteur canvas dans votre navigateur local. Aucune donnée ne quitte votre appareil. C'est la façon la plus sûre et la plus rapide d'optimiser votre profil sans compromettre votre vie privée.",
|
|
209
199
|
},
|
|
210
200
|
],
|
|
211
201
|
ui: {
|
|
@@ -254,21 +244,21 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
254
244
|
statusNeutral: 'NEUTRE',
|
|
255
245
|
|
|
256
246
|
alertExcellent: 'Excellente composition technique.',
|
|
257
|
-
alertEmptySpaces: 'ESPACES VIDES
|
|
258
|
-
alertAlmostInvisible: 'PRESQUE INVISIBLE
|
|
259
|
-
alertTooClose: 'TROP PRÈS
|
|
260
|
-
alertPerfectSize: 'TAILLE PARFAITE
|
|
261
|
-
alertImpactfulLook: 'REGARD IMPACTANT
|
|
262
|
-
alertEyeLineMoveUp: 'LIGNE DES YEUX
|
|
263
|
-
alertEyeLineMoveDown: 'LIGNE DES YEUX
|
|
264
|
-
alertTiltedHead: 'TÊTE INCLINÉE
|
|
265
|
-
alertSmileDetected: 'SOURIRE
|
|
266
|
-
alertSevereExpression: 'EXPRESSION SÉVÈRE
|
|
267
|
-
alertObstructedTop: '
|
|
268
|
-
alertObstructedBottom: '
|
|
269
|
-
alertLowLight: 'ÉCLAIRAGE DÉFICIENT
|
|
270
|
-
alertCutOff: '
|
|
271
|
-
alertProTip: 'CONSEIL PRO
|
|
247
|
+
alertEmptySpaces: 'ESPACES VIDES: L\'image ne couvre pas tout le cadre. Ajustez le zoom ou la position.',
|
|
248
|
+
alertAlmostInvisible: 'PRESQUE INVISIBLE: Vous êtes trop loin. Zoomez jusqu\'à ce que votre visage occupe au moins un tiers de l\'écran.',
|
|
249
|
+
alertTooClose: 'TROP PRÈS: Les gros plans extrêmes peuvent paraître agressifs.',
|
|
250
|
+
alertPerfectSize: 'TAILLE PARFAITE: Votre visage a le ratio idéal pour transmettre la confiance.',
|
|
251
|
+
alertImpactfulLook: 'REGARD IMPACTANT: Vos yeux sont sur la ligne d\'attention maximale.',
|
|
252
|
+
alertEyeLineMoveUp: 'LIGNE DES YEUX: Pour un cadrage professionnel, remontez légèrement le visage jusqu\'à la ligne supérieure.',
|
|
253
|
+
alertEyeLineMoveDown: 'LIGNE DES YEUX: Pour un cadrage professionnel, baissez légèrement le visage jusqu\'à la ligne supérieure.',
|
|
254
|
+
alertTiltedHead: 'TÊTE INCLINÉE: Une posture trop inclinée peut transmettre de l\'instabilité.',
|
|
255
|
+
alertSmileDetected: 'SOURIRE DÉTECTÉ: Les sourires augmentent considérablement le taux de match.',
|
|
256
|
+
alertSevereExpression: 'EXPRESSION SÉVÈRE: Essayez d\'utiliser une photo avec un geste plus amical.',
|
|
257
|
+
alertObstructedTop: 'OBSTRUÉ: La barre de progression cache votre visage.',
|
|
258
|
+
alertObstructedBottom: 'OBSTRUÉ: Le bloc d\'information cache votre visage.',
|
|
259
|
+
alertLowLight: 'ÉCLAIRAGE DÉFICIENT: L\'IA a des difficultés à vous voir. Cherchez une photo avec une meilleure lumière.',
|
|
260
|
+
alertCutOff: 'COUPÉ: Le visage sort du cadre vertical.',
|
|
261
|
+
alertProTip: 'CONSEIL PRO: S\'il s\'agit d\'un selfie, utilisez le Zoom (1.2x) pour éviter les distorsions de l\'objectif.',
|
|
272
262
|
|
|
273
263
|
canvasFaceDetected: 'Visage détecté',
|
|
274
264
|
},
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { TinderPhotoOptimizerUI } from '../ui';
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'Referensi',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'face-api.js: JavaScript Face Recognition in the Browser',
|
|
96
|
-
url: 'https://github.com/justadudewhohacks/face-api.js',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'MDN Web Docs: Canvas API',
|
|
100
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { TinderPhotoOptimizerUI } from '../ui';
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'Riferimenti',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'face-api.js: JavaScript Face Recognition in the Browser',
|
|
96
|
-
url: 'https://github.com/justadudewhohacks/face-api.js',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'MDN Web Docs: Canvas API',
|
|
100
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { TinderPhotoOptimizerUI } from '../ui';
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: '参考文献',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'face-api.js: JavaScript Face Recognition in the Browser',
|
|
96
|
-
url: 'https://github.com/justadudewhohacks/face-api.js',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'MDN Web Docs: Canvas API',
|
|
100
|
-
url: 'https://developer.mozilla.org/ja/docs/Web/API/Canvas_API',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { TinderPhotoOptimizerUI } from '../ui';
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: '참고 문헌',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'face-api.js: JavaScript Face Recognition in the Browser',
|
|
96
|
-
url: 'https://github.com/justadudewhohacks/face-api.js',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'MDN Web Docs: Canvas API',
|
|
100
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { TinderPhotoOptimizerUI } from '../ui';
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'Referenties',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'face-api.js: JavaScript Face Recognition in the Browser',
|
|
96
|
-
url: 'https://github.com/justadudewhohacks/face-api.js',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'MDN Web Docs: Canvas API',
|
|
100
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { TinderPhotoOptimizerUI } from '../ui';
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'Źródła',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'face-api.js: JavaScript Face Recognition in the Browser',
|
|
96
|
-
url: 'https://github.com/justadudewhohacks/face-api.js',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'MDN Web Docs: Canvas API',
|
|
100
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { TinderPhotoOptimizerUI } from '../ui';
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'Referências',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'face-api.js: JavaScript Face Recognition in the Browser',
|
|
96
|
-
url: 'https://github.com/justadudewhohacks/face-api.js',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'MDN Web Docs: Canvas API',
|
|
100
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
3
|
import type { ToolLocaleContent } from '../../../types';
|
|
3
4
|
import type { TinderPhotoOptimizerUI } from '../ui';
|
|
@@ -11,7 +12,7 @@ const faqData = [
|
|
|
11
12
|
{
|
|
12
13
|
question: 'Как этот инструмент улучшает мои совпадения в Tinder?',
|
|
13
14
|
answer:
|
|
14
|
-
'Инструмент анализирует ключевые технические факторы: соотношение размера лица (идеально 30
|
|
15
|
+
'Инструмент анализирует ключевые технические факторы: соотношение размера лица (идеально 30-50%), положение линии глаз относительно верхней трети, охват кадра и \"мертвые зоны\" интерфейса Tinder. Настраивая эти параметры, вы транслируете больше уверенности и обходите визуальные фильтры алгоритма.',
|
|
15
16
|
},
|
|
16
17
|
{
|
|
17
18
|
question: 'Безопасно ли загружать сюда мои фотографии?',
|
|
@@ -26,7 +27,7 @@ const faqData = [
|
|
|
26
27
|
{
|
|
27
28
|
question: 'Почему рекомендуется зум 1.2x?',
|
|
28
29
|
answer:
|
|
29
|
-
'Фронтальные камеры смартфонов используют широкоугольную оптику (24 мм), которая искажает лицо из-за бочкообразной аберрации. Зум 1.2x симулирует фокусное расстояние 50
|
|
30
|
+
'Фронтальные камеры смартфонов используют широкоугольную оптику (24 мм), которая искажает лицо из-за бочкообразной аберрации. Зум 1.2x симулирует фокусное расстояние 50-85 мм, устраняя искажения и обеспечивая более естественные и привлекательные пропорции лица.',
|
|
30
31
|
},
|
|
31
32
|
];
|
|
32
33
|
|
|
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
87
88
|
slug,
|
|
88
89
|
title,
|
|
89
90
|
description,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bibliographyTitle: 'Ссылки',
|
|
93
|
-
bibliography: [
|
|
94
|
-
{
|
|
95
|
-
name: 'face-api.js: JavaScript Face Recognition in the Browser',
|
|
96
|
-
url: 'https://github.com/justadudewhohacks/face-api.js',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'MDN Web Docs: Canvas API',
|
|
100
|
-
url: 'https://developer.mozilla.org/ru/docs/Web/API/Canvas_API',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
103
93
|
howTo: howToData,
|
|
104
94
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
95
|
seo: [
|
|
@@ -136,11 +126,11 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
136
126
|
},
|
|
137
127
|
{
|
|
138
128
|
type: 'paragraph',
|
|
139
|
-
html: 'Почти все фото профиля делаются на смартфоны, фронтальные камеры которых являются широкоугольными. Самая частая ошибка
|
|
129
|
+
html: 'Почти все фото профиля делаются на смартфоны, фронтальные камеры которых являются широкоугольными. Самая частая ошибка - подходить слишком близко к устройству.',
|
|
140
130
|
},
|
|
141
131
|
{
|
|
142
132
|
type: 'paragraph',
|
|
143
|
-
html: '<strong>Бочкообразная аберрация:</strong> На расстоянии менее метра линза 24 мм (стандарт в мобильных телефонах) расширяет центр изображения. Из-за этого нос кажется крупнее, а лицо
|
|
133
|
+
html: '<strong>Бочкообразная аберрация:</strong> На расстоянии менее метра линза 24 мм (стандарт в мобильных телефонах) расширяет центр изображения. Из-за этого нос кажется крупнее, а лицо - круглее, чем на самом деле. Наша рекомендация <strong>Зум 1.2x</strong> является корректирующей: применяя легкое цифровое кадрирование, вы симулируете фокусное расстояние от 50 до 85 мм - \"золотой стандарт\", который используют фэшн-фотографы для визуального сужения лица и сохранения реальных пропорций.',
|
|
144
134
|
},
|
|
145
135
|
{
|
|
146
136
|
type: 'title',
|
|
@@ -149,12 +139,12 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
149
139
|
},
|
|
150
140
|
{
|
|
151
141
|
type: 'paragraph',
|
|
152
|
-
html: 'Многие отличные фото
|
|
142
|
+
html: 'Многие отличные фото \"проваливаются\" из-за игнорирования программного слоя (UI), который Tinder накладывает сверху. Среднестатистический пользователь видит не ваше чистое фото, а смесь кнопок, градиентов и текста.',
|
|
153
143
|
},
|
|
154
144
|
{
|
|
155
145
|
type: 'list',
|
|
156
146
|
items: [
|
|
157
|
-
'<strong>Зона заголовков (верхние 15%):</strong> Здесь располагаются индикаторы прогресса и строка состояния. Если ваш лоб или глаза здесь, интерфейс визуально
|
|
147
|
+
'<strong>Зона заголовков (верхние 15%):</strong> Здесь располагаются индикаторы прогресса и строка состояния. Если ваш лоб или глаза здесь, интерфейс визуально \"отрезает\" часть головы.',
|
|
158
148
|
'<strong>Зона действия (кнопки):</strong> Иконки Like, Nope и Boost занимают нижние боковые части. Если ваши руки или элементы стиля находятся там, они будут полностью потеряны.',
|
|
159
149
|
'<strong>Градиент читаемости (нижние 28%):</strong> Tinder применяет черное затемнение, чтобы имя и возраст были читаемы. Если лицо попадает в эту зону, текст наложится на черты лица, портя эстетику профиля.',
|
|
160
150
|
],
|
|
@@ -183,12 +173,12 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
183
173
|
},
|
|
184
174
|
{
|
|
185
175
|
type: 'paragraph',
|
|
186
|
-
html: 'Знаете ли вы, что
|
|
176
|
+
html: 'Знаете ли вы, что \"вес\" вашего изображения влияет на алгоритм? Приложения для знакомств отдают приоритет контенту, который загружается быстро, чтобы не прерывать флоу пользователя.',
|
|
187
177
|
},
|
|
188
178
|
{
|
|
189
179
|
type: 'list',
|
|
190
180
|
items: [
|
|
191
|
-
'<strong>Metadata Stripping (приватность и SEO):</strong> Мы удаляем записи EXIF. Чистое фото дает вам
|
|
181
|
+
'<strong>Metadata Stripping (приватность и SEO):</strong> Мы удаляем записи EXIF. Чистое фото дает вам \"новый холст\" для алгоритма платформы.',
|
|
192
182
|
'<strong>Умное сжатие без потерь:</strong> Мы уменьшаем вес файла JPG, сохраняя цветовое пространство sRGB, нативное для iOS и Android. Ваше фото будет выглядеть сочно даже при плохом сигнале.',
|
|
193
183
|
'<strong>Иммерсивный формат 9:16:</strong> Выдавая ровно 1080x1920 пикселей, мы предотвращаем применение Tinder собственного агрессивного алгоритма сжатия, создающего артефакты изображения.',
|
|
194
184
|
],
|
|
@@ -196,7 +186,7 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
|
|
|
196
186
|
{
|
|
197
187
|
type: 'tip',
|
|
198
188
|
title: 'Совет эксперта',
|
|
199
|
-
html: '<p>Первое фото ВСЕГДА должно быть четким портретом по плечи. Фото в полный рост или за каким-то занятием оставьте для 3-й или 4-й позиции. Убедитесь, что при этом первом впечатлении ваш взгляд ничем не заслонен, а лицо имеет оптимальный размер (30
|
|
189
|
+
html: '<p>Первое фото ВСЕГДА должно быть четким портретом по плечи. Фото в полный рост или за каким-то занятием оставьте для 3-й или 4-й позиции. Убедитесь, что при этом первом впечатлении ваш взгляд ничем не заслонен, а лицо имеет оптимальный размер (30-50%).</p>',
|
|
200
190
|
},
|
|
201
191
|
{
|
|
202
192
|
type: 'title',
|