@jjlmoya/utils-converters 1.25.0 → 1.26.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.
Files changed (133) hide show
  1. package/package.json +2 -2
  2. package/src/category/i18n/de.ts +1 -1
  3. package/src/category/i18n/en.ts +1 -1
  4. package/src/category/i18n/fr.ts +1 -1
  5. package/src/category/i18n/id.ts +1 -1
  6. package/src/category/i18n/it.ts +1 -1
  7. package/src/category/i18n/nl.ts +1 -1
  8. package/src/category/i18n/pl.ts +1 -1
  9. package/src/category/i18n/pt.ts +1 -1
  10. package/src/category/i18n/sv.ts +1 -1
  11. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  12. package/src/tests/category_seo_quality.test.ts +74 -0
  13. package/src/tests/faq_count.test.ts +1 -1
  14. package/src/tests/no_h1_in_components.test.ts +1 -1
  15. package/src/tests/seo_parity.test.ts +2 -2
  16. package/src/tests/seo_wellformed_export.test.ts +65 -0
  17. package/src/tests/tool_validation.test.ts +15 -15
  18. package/src/tool/avifAJpg/i18n/en.ts +164 -164
  19. package/src/tool/avifAJpg/i18n/es.ts +164 -164
  20. package/src/tool/avifAJpg/i18n/fr.ts +164 -164
  21. package/src/tool/avifAJpg/i18n/ja.ts +166 -166
  22. package/src/tool/avifAJpg/i18n/ko.ts +166 -166
  23. package/src/tool/avifAJpg/i18n/zh.ts +166 -166
  24. package/src/tool/avifAJpg/seo.astro +15 -15
  25. package/src/tool/avifAPng/i18n/en.ts +164 -164
  26. package/src/tool/avifAPng/i18n/es.ts +164 -164
  27. package/src/tool/avifAPng/i18n/fr.ts +164 -164
  28. package/src/tool/avifAPng/i18n/ja.ts +166 -166
  29. package/src/tool/avifAPng/i18n/ko.ts +166 -166
  30. package/src/tool/avifAPng/i18n/zh.ts +166 -166
  31. package/src/tool/avifAPng/seo.astro +15 -15
  32. package/src/tool/avifAWebp/i18n/en.ts +164 -164
  33. package/src/tool/avifAWebp/i18n/es.ts +164 -164
  34. package/src/tool/avifAWebp/i18n/fr.ts +164 -164
  35. package/src/tool/avifAWebp/i18n/ja.ts +166 -166
  36. package/src/tool/avifAWebp/i18n/ko.ts +166 -166
  37. package/src/tool/avifAWebp/i18n/zh.ts +166 -166
  38. package/src/tool/avifAWebp/seo.astro +15 -15
  39. package/src/tool/bmpAJpg/i18n/en.ts +164 -164
  40. package/src/tool/bmpAJpg/i18n/es.ts +164 -164
  41. package/src/tool/bmpAJpg/i18n/fr.ts +164 -164
  42. package/src/tool/bmpAJpg/i18n/ja.ts +166 -166
  43. package/src/tool/bmpAJpg/i18n/ko.ts +166 -166
  44. package/src/tool/bmpAJpg/i18n/zh.ts +166 -166
  45. package/src/tool/bmpAJpg/seo.astro +15 -15
  46. package/src/tool/bmpAPng/i18n/en.ts +164 -164
  47. package/src/tool/bmpAPng/i18n/es.ts +164 -164
  48. package/src/tool/bmpAPng/i18n/fr.ts +164 -164
  49. package/src/tool/bmpAPng/i18n/ja.ts +165 -165
  50. package/src/tool/bmpAPng/i18n/ko.ts +165 -165
  51. package/src/tool/bmpAPng/i18n/zh.ts +165 -165
  52. package/src/tool/bmpAPng/seo.astro +15 -15
  53. package/src/tool/bmpAWebp/i18n/en.ts +164 -164
  54. package/src/tool/bmpAWebp/i18n/es.ts +164 -164
  55. package/src/tool/bmpAWebp/i18n/fr.ts +164 -164
  56. package/src/tool/bmpAWebp/i18n/ja.ts +166 -166
  57. package/src/tool/bmpAWebp/i18n/ko.ts +166 -166
  58. package/src/tool/bmpAWebp/i18n/zh.ts +166 -166
  59. package/src/tool/bmpAWebp/seo.astro +15 -15
  60. package/src/tool/gifAJpg/i18n/en.ts +164 -164
  61. package/src/tool/gifAJpg/i18n/es.ts +164 -164
  62. package/src/tool/gifAJpg/i18n/fr.ts +164 -164
  63. package/src/tool/gifAJpg/i18n/ja.ts +166 -166
  64. package/src/tool/gifAJpg/i18n/ko.ts +166 -166
  65. package/src/tool/gifAJpg/i18n/zh.ts +166 -166
  66. package/src/tool/gifAJpg/seo.astro +15 -15
  67. package/src/tool/gifAPng/i18n/en.ts +164 -164
  68. package/src/tool/gifAPng/i18n/es.ts +164 -164
  69. package/src/tool/gifAPng/i18n/fr.ts +164 -164
  70. package/src/tool/gifAPng/i18n/ja.ts +166 -166
  71. package/src/tool/gifAPng/i18n/ko.ts +166 -166
  72. package/src/tool/gifAPng/i18n/zh.ts +166 -166
  73. package/src/tool/gifAPng/seo.astro +15 -15
  74. package/src/tool/gifAWebp/i18n/en.ts +164 -164
  75. package/src/tool/gifAWebp/i18n/es.ts +164 -164
  76. package/src/tool/gifAWebp/i18n/fr.ts +164 -164
  77. package/src/tool/gifAWebp/i18n/ja.ts +166 -166
  78. package/src/tool/gifAWebp/i18n/ko.ts +166 -166
  79. package/src/tool/gifAWebp/i18n/zh.ts +166 -166
  80. package/src/tool/gifAWebp/seo.astro +15 -15
  81. package/src/tool/imagenBase64/i18n/en.ts +154 -154
  82. package/src/tool/imagenBase64/i18n/es.ts +154 -154
  83. package/src/tool/imagenBase64/i18n/fr.ts +154 -154
  84. package/src/tool/imagenBase64/seo.astro +15 -15
  85. package/src/tool/jpgAIco/seo.astro +15 -15
  86. package/src/tool/jpgAPng/i18n/en.ts +164 -164
  87. package/src/tool/jpgAPng/i18n/es.ts +164 -164
  88. package/src/tool/jpgAPng/i18n/fr.ts +164 -164
  89. package/src/tool/jpgAPng/i18n/ja.ts +166 -166
  90. package/src/tool/jpgAPng/i18n/ko.ts +166 -166
  91. package/src/tool/jpgAPng/i18n/zh.ts +166 -166
  92. package/src/tool/jpgAPng/seo.astro +15 -15
  93. package/src/tool/jpgAWebp/i18n/en.ts +164 -164
  94. package/src/tool/jpgAWebp/i18n/es.ts +164 -164
  95. package/src/tool/jpgAWebp/i18n/fr.ts +164 -164
  96. package/src/tool/jpgAWebp/seo.astro +15 -15
  97. package/src/tool/pngAIco/seo.astro +15 -15
  98. package/src/tool/pngAJpg/i18n/de.ts +21 -21
  99. package/src/tool/pngAJpg/i18n/es.ts +177 -177
  100. package/src/tool/pngAJpg/i18n/fr.ts +137 -137
  101. package/src/tool/pngAJpg/i18n/id.ts +89 -89
  102. package/src/tool/pngAJpg/i18n/it.ts +89 -89
  103. package/src/tool/pngAJpg/i18n/ko.ts +177 -177
  104. package/src/tool/pngAJpg/i18n/nl.ts +20 -20
  105. package/src/tool/pngAJpg/i18n/pl.ts +89 -89
  106. package/src/tool/pngAJpg/i18n/pt.ts +89 -89
  107. package/src/tool/pngAJpg/i18n/ru.ts +177 -177
  108. package/src/tool/pngAJpg/i18n/sv.ts +89 -89
  109. package/src/tool/pngAJpg/i18n/tr.ts +89 -89
  110. package/src/tool/pngAJpg/seo.astro +15 -15
  111. package/src/tool/pngAWebp/i18n/en.ts +164 -164
  112. package/src/tool/pngAWebp/i18n/es.ts +164 -164
  113. package/src/tool/pngAWebp/i18n/fr.ts +164 -164
  114. package/src/tool/pngAWebp/seo.astro +15 -15
  115. package/src/tool/svgAJpg/i18n/fr.ts +164 -164
  116. package/src/tool/svgAJpg/seo.astro +15 -15
  117. package/src/tool/svgAPng/i18n/fr.ts +164 -164
  118. package/src/tool/svgAPng/seo.astro +15 -15
  119. package/src/tool/webpAIco/seo.astro +15 -15
  120. package/src/tool/webpAJpg/seo.astro +15 -15
  121. package/src/tool/webpAPng/bibliography.ts +13 -13
  122. package/src/tool/webpAPng/i18n/de.ts +166 -166
  123. package/src/tool/webpAPng/i18n/es.ts +171 -171
  124. package/src/tool/webpAPng/i18n/fr.ts +166 -166
  125. package/src/tool/webpAPng/i18n/id.ts +166 -166
  126. package/src/tool/webpAPng/i18n/it.ts +166 -166
  127. package/src/tool/webpAPng/i18n/nl.ts +166 -166
  128. package/src/tool/webpAPng/i18n/pl.ts +166 -166
  129. package/src/tool/webpAPng/i18n/pt.ts +166 -166
  130. package/src/tool/webpAPng/i18n/ru.ts +166 -166
  131. package/src/tool/webpAPng/i18n/sv.ts +166 -166
  132. package/src/tool/webpAPng/i18n/tr.ts +167 -167
  133. package/src/tool/webpAPng/seo.astro +15 -15
@@ -1,158 +1,158 @@
1
1
  import { bibliography } from '../bibliography';
2
- import type { ImagenBase64LocaleContent } from '../index';
2
+ import type { ImagenBase64LocaleContent } from '../index';
3
3
  import { generateSchemas } from '../../../shared/logic/schemas';
4
- import type { ImageToBase64UI } from '../index';
5
-
6
- const slug = 'convertisseur-image-base64';
7
- const title = 'Convertisseur Image vers Base64 en Ligne';
8
- const description =
9
- 'Convertissez n\'importe quelle image en code Base64 et Data URI directement dans votre navigateur. Sans téléchargement. Gratuit, privé et instantané.';
10
-
11
- const ui: ImageToBase64UI = {
12
- dragTitle: 'Faites glisser votre image ici',
13
- dragSubtext: 'ou cliquez pour parcourir vos fichiers',
14
- formatBadge: 'Supporte JPG, PNG, WEBP, SVG, GIF',
15
- dataUriLabel: 'Data URI (Prêt pour CSS / HTML src="")',
16
- base64Label: 'Base64 uniquement (Texte encodé en clair)',
17
- copyBtn: 'Copier',
18
- dataUriPlaceholder: 'Téléchargez une image pour voir le code Data URI...',
19
- base64Placeholder: 'Téléchargez une image pour voir le code Base64 pur...',
20
- toastMessage: 'Code copié dans le presse-papiers !',
4
+ import type { ImageToBase64UI } from '../index';
5
+
6
+ const slug = 'convertisseur-image-base64';
7
+ const title = 'Convertisseur Image vers Base64 en Ligne';
8
+ const description =
9
+ 'Convertissez n\'importe quelle image en code Base64 et Data URI directement dans votre navigateur. Sans téléchargement. Gratuit, privé et instantané.';
10
+
11
+ const ui: ImageToBase64UI = {
12
+ dragTitle: 'Faites glisser votre image ici',
13
+ dragSubtext: 'ou cliquez pour parcourir vos fichiers',
14
+ formatBadge: 'Supporte JPG, PNG, WEBP, SVG, GIF',
15
+ dataUriLabel: 'Data URI (Prêt pour CSS / HTML src="")',
16
+ base64Label: 'Base64 uniquement (Texte encodé en clair)',
17
+ copyBtn: 'Copier',
18
+ dataUriPlaceholder: 'Téléchargez une image pour voir le code Data URI...',
19
+ base64Placeholder: 'Téléchargez une image pour voir le code Base64 pur...',
20
+ toastMessage: 'Code copié dans le presse-papiers !',
21
21
  invalidImageAlert: 'Veuillez télécharger un fichier image valide.',
22
- bibliographyTitle: 'Références Bibliographiques',
23
- faqTitle: 'Questions Fréquentes',
24
- };
25
-
26
- const faq: ImagenBase64LocaleContent['faq'] = [
27
- {
28
- question: 'Qu\'est-ce que Base64 et à quoi sert-il dans le développement web ?',
29
- answer:
30
- 'Base64 est un système d\'encodage qui convertit des données binaires en une chaîne de texte ASCII. Dans le développement web, il est utilisé pour intégrer des images directement dans les fichiers HTML ou CSS via des Data URIs, réduisant le nombre de requêtes HTTP vers le serveur.',
31
- },
32
- {
33
- question: 'Est-il sûr de convertir mes images en Base64 ici ?',
34
- answer:
35
- 'Absolument sûr et privé. Notre outil fonctionne à 100% localement dans votre navigateur. Vos images ne sont jamais téléchargées ni traitées sur un serveur externe.',
36
- },
37
- {
38
- question: 'Quels formats d\'image le convertisseur Base64 supporte-t-il ?',
39
- answer:
40
- 'L\'outil est compatible avec JPG, PNG, GIF, WebP et même les fichiers vectoriels SVG. Lors du chargement de l\'image, il détectera automatiquement son type MIME pour générer le code Data URI exact.',
41
- },
42
- {
43
- question: 'Quand NE devrais-je PAS utiliser des images en Base64 ?',
44
- answer:
45
- 'Vous devriez éviter d\'utiliser des images en Base64 pour de grandes photographies ou des images haute résolution. Le code Base64 occupe environ 33% de poids en plus que le fichier binaire original, ce qui peut excessivement gonfler vos feuilles de style CSS ou documents HTML.',
46
- },
47
- ];
48
-
49
- const howTo: ImagenBase64LocaleContent['howTo'] = [
50
- {
51
- name: 'Faites glisser ou sélectionnez votre image',
52
- text: 'Déplacez n\'importe quelle image (JPG, PNG, WebP, SVG, GIF) vers la zone de téléchargement pour démarrer la conversion.',
53
- },
54
- {
55
- name: 'Copiez le code généré',
56
- text: 'Vous verrez deux zones de texte: le Data URI complet (prêt à utiliser dans src="" ou CSS) et le Base64 pur pour d\'autres utilisations.',
57
- },
58
- {
59
- name: 'Utilisez le code dans votre projet',
60
- text: 'Collez directement le Data URI dans le src d\'une balise img ou dans votre CSS comme background-image sans avoir besoin de fichiers externes.',
61
- },
62
- ];
63
-
64
- const seo: ImagenBase64LocaleContent['seo'] = [
65
- {
66
- type: 'title',
67
- text: 'Convertisseur Image vers Base64: Intégrez des Images Sans Requêtes HTTP',
68
- level: 2,
69
- },
70
- {
71
- type: 'paragraph',
72
- html: 'Base64 est une technique d\'encodage qui transforme des données binaires - comme une image - en une chaîne de texte ASCII pur. Le résultat est un Data URI: une URL auto-contenue qui commence par <code>data:image/png;base64,...</code> et contient l\'image entière encodée. En intégrant ce code directement dans votre HTML, CSS ou JSON, l\'image se charge sans aucune requête HTTP supplémentaire au serveur - zéro latence réseau, chargement instantané.',
73
- },
74
- {
75
- type: 'title',
76
- text: 'Quand utiliser les images en Base64',
77
- level: 3,
78
- },
79
- {
80
- type: 'paragraph',
81
- html: 'Le principal argument en faveur de Base64 est l\'élimination des requêtes réseau. Chaque image sur une page web représente une requête HTTP avec son overhead de connexion, DNS, handshake TLS et latence. Pour les très petites images critiques - le logo principal de l\'application, le favicon, une icône d\'interface - les intégrer en Base64 dans le CSS ou HTML élimine ce coût et garantit leur affichage instantané même avant que le navigateur n\'ait rien mis en cache.',
82
- },
83
- {
84
- type: 'paragraph',
85
- html: 'Cette technique est particulièrement puissante dans les applications SPA (Single Page Applications) où le bundle JavaScript et CSS est généré au moment de la compilation: intégrer de petites images dans le bundle garantit qu\'elles se chargent avec le code sans requêtes supplémentaires. Elle est aussi indispensable pour les emails HTML, où les clients de messagerie bloquent les images externes mais affichent toujours les Data URIs intégrés.',
86
- },
87
- {
88
- type: 'title',
89
- text: 'Cas d\'utilisation pour les images Base64',
90
- level: 3,
91
- },
92
- {
93
- type: 'list',
94
- icon: 'mdi:check-circle',
95
- items: [
96
- 'HTML inline: <code>&lt;img src="data:image/png;base64,..."&gt;</code> pour les icônes critiques.',
97
- 'CSS background: <code>background-image: url("data:image/svg+xml;base64,...")</code> pour les SVGs d\'interface.',
98
- 'JSON et APIs REST: envoi d\'images comme données texte dans les payloads JSON.',
99
- 'Emails HTML: images intégrées qui s\'affichent même quand le client bloque les URLs externes.',
100
- 'Intégration SVG: intégrer des images raster dans des fichiers SVG comme données inline.',
101
- ],
102
- },
103
- {
104
- type: 'title',
105
- text: 'Comment fonctionne la conversion dans le navigateur',
106
- level: 3,
107
- },
108
- {
109
- type: 'paragraph',
110
- html: 'Lorsque vous sélectionnez ou faites glisser une image, l\'API <code>FileReader</code> du navigateur la lit directement depuis le disque comme données binaires en RAM. La méthode <code>readAsDataURL()</code> convertit ces octets binaires en leur représentation Base64 selon l\'algorithme RFC 4648 - chaque 3 octets de données originales sont représentés par 4 caractères ASCII de l\'alphabet Base64. Le résultat inclut le type MIME correct détecté automatiquement.',
111
- },
112
- {
113
- type: 'tip',
114
- title: 'Utilisez',
115
- html: 'Base64 augmente la taille du fichier d\'environ 33%: une image de 10 Ko devient ~13,3 Ko de texte. Pour les petites icônes et logos, ce coût est minimal et l\'élimination de la requête HTTP le compense. Pour les photographies ou grandes images, le surcoût de taille est significatif - utilisez toujours un CDN pour les grandes images.',
116
- },
117
- {
118
- type: 'title',
119
- text: 'Quand NE PAS utiliser Base64',
120
- level: 3,
121
- },
122
- {
123
- type: 'tip',
124
- title: 'Évitez Base64 pour les grandes images: utilisez un CDN',
125
- html: 'Si vous avez des images de plus de 10-20 Ko, Base64 nuit aux performances: il gonfle la taille du HTML/CSS, empêche le navigateur de mettre l\'image en cache de façon indépendante, et bloque le rendu pendant que le parseur traite la chaîne géante. Pour les grandes images, servez toujours depuis un CDN avec des en-têtes de cache appropriés.',
126
- },
127
- {
128
- type: 'title',
129
- text: 'Compatibilité et confidentialité',
130
- level: 3,
131
- },
132
- {
133
- type: 'paragraph',
134
- html: 'Les Data URIs sont compatibles avec 100% des navigateurs modernes et la plupart des clients de messagerie. Notre outil traite tout localement via l\'API FileReader - vos images ne quittent jamais votre appareil. Cela le rend adapté aux images d\'entreprise, aux captures d\'écran privées ou à tout contenu visuel confidentiel que vous devez convertir en Base64.',
135
- },
136
- {
137
- type: 'title',
138
- text: 'Conclusion: L\'outil d\'intégration le plus rapide et le plus privé',
139
- level: 3,
140
- },
141
- {
142
- type: 'paragraph',
143
- html: 'Convertir des images en Base64 est une technique ciblée mais très puissante quand elle est appliquée correctement. Utilisez-la pour les petites images critiques où zéro requête HTTP fait la différence, et évitez-la pour les grandes images où un CDN gagne toujours. Avec notre outil, vous obtenez le Data URI en un instant, sans rien téléverser sur aucun serveur.',
144
- },
145
- ];
146
-
22
+ bibliographyTitle: 'Références Bibliographiques',
23
+ faqTitle: 'Questions Fréquentes',
24
+ };
25
+
26
+ const faq: ImagenBase64LocaleContent['faq'] = [
27
+ {
28
+ question: 'Qu\'est-ce que Base64 et à quoi sert-il dans le développement web ?',
29
+ answer:
30
+ 'Base64 est un système d\'encodage qui convertit des données binaires en une chaîne de texte ASCII. Dans le développement web, il est utilisé pour intégrer des images directement dans les fichiers HTML ou CSS via des Data URIs, réduisant le nombre de requêtes HTTP vers le serveur.',
31
+ },
32
+ {
33
+ question: 'Est-il sûr de convertir mes images en Base64 ici ?',
34
+ answer:
35
+ 'Absolument sûr et privé. Notre outil fonctionne à 100% localement dans votre navigateur. Vos images ne sont jamais téléchargées ni traitées sur un serveur externe.',
36
+ },
37
+ {
38
+ question: 'Quels formats d\'image le convertisseur Base64 supporte-t-il ?',
39
+ answer:
40
+ 'L\'outil est compatible avec JPG, PNG, GIF, WebP et même les fichiers vectoriels SVG. Lors du chargement de l\'image, il détectera automatiquement son type MIME pour générer le code Data URI exact.',
41
+ },
42
+ {
43
+ question: 'Quand NE devrais-je PAS utiliser des images en Base64 ?',
44
+ answer:
45
+ 'Vous devriez éviter d\'utiliser des images en Base64 pour de grandes photographies ou des images haute résolution. Le code Base64 occupe environ 33% de poids en plus que le fichier binaire original, ce qui peut excessivement gonfler vos feuilles de style CSS ou documents HTML.',
46
+ },
47
+ ];
48
+
49
+ const howTo: ImagenBase64LocaleContent['howTo'] = [
50
+ {
51
+ name: 'Faites glisser ou sélectionnez votre image',
52
+ text: 'Déplacez n\'importe quelle image (JPG, PNG, WebP, SVG, GIF) vers la zone de téléchargement pour démarrer la conversion.',
53
+ },
54
+ {
55
+ name: 'Copiez le code généré',
56
+ text: 'Vous verrez deux zones de texte: le Data URI complet (prêt à utiliser dans src="" ou CSS) et le Base64 pur pour d\'autres utilisations.',
57
+ },
58
+ {
59
+ name: 'Utilisez le code dans votre projet',
60
+ text: 'Collez directement le Data URI dans le src d\'une balise img ou dans votre CSS comme background-image sans avoir besoin de fichiers externes.',
61
+ },
62
+ ];
63
+
64
+ const seo: ImagenBase64LocaleContent['seo'] = [
65
+ {
66
+ type: 'title',
67
+ text: 'Convertisseur Image vers Base64: Intégrez des Images Sans Requêtes HTTP',
68
+ level: 2,
69
+ },
70
+ {
71
+ type: 'paragraph',
72
+ html: 'Base64 est une technique d\'encodage qui transforme des données binaires - comme une image - en une chaîne de texte ASCII pur. Le résultat est un Data URI: une URL auto-contenue qui commence par <code>data:image/png;base64,...</code> et contient l\'image entière encodée. En intégrant ce code directement dans votre HTML, CSS ou JSON, l\'image se charge sans aucune requête HTTP supplémentaire au serveur - zéro latence réseau, chargement instantané.',
73
+ },
74
+ {
75
+ type: 'title',
76
+ text: 'Quand utiliser les images en Base64',
77
+ level: 3,
78
+ },
79
+ {
80
+ type: 'paragraph',
81
+ html: 'Le principal argument en faveur de Base64 est l\'élimination des requêtes réseau. Chaque image sur une page web représente une requête HTTP avec son overhead de connexion, DNS, handshake TLS et latence. Pour les très petites images critiques - le logo principal de l\'application, le favicon, une icône d\'interface - les intégrer en Base64 dans le CSS ou HTML élimine ce coût et garantit leur affichage instantané même avant que le navigateur n\'ait rien mis en cache.',
82
+ },
83
+ {
84
+ type: 'paragraph',
85
+ html: 'Cette technique est particulièrement puissante dans les applications SPA (Single Page Applications) où le bundle JavaScript et CSS est généré au moment de la compilation: intégrer de petites images dans le bundle garantit qu\'elles se chargent avec le code sans requêtes supplémentaires. Elle est aussi indispensable pour les emails HTML, où les clients de messagerie bloquent les images externes mais affichent toujours les Data URIs intégrés.',
86
+ },
87
+ {
88
+ type: 'title',
89
+ text: 'Cas d\'utilisation pour les images Base64',
90
+ level: 3,
91
+ },
92
+ {
93
+ type: 'list',
94
+ icon: 'mdi:check-circle',
95
+ items: [
96
+ 'HTML inline: <code>&lt;img src="data:image/png;base64,..."&gt;</code> pour les icônes critiques.',
97
+ 'CSS background: <code>background-image: url("data:image/svg+xml;base64,...")</code> pour les SVGs d\'interface.',
98
+ 'JSON et APIs REST: envoi d\'images comme données texte dans les payloads JSON.',
99
+ 'Emails HTML: images intégrées qui s\'affichent même quand le client bloque les URLs externes.',
100
+ 'Intégration SVG: intégrer des images raster dans des fichiers SVG comme données inline.',
101
+ ],
102
+ },
103
+ {
104
+ type: 'title',
105
+ text: 'Comment fonctionne la conversion dans le navigateur',
106
+ level: 3,
107
+ },
108
+ {
109
+ type: 'paragraph',
110
+ html: 'Lorsque vous sélectionnez ou faites glisser une image, l\'API <code>FileReader</code> du navigateur la lit directement depuis le disque comme données binaires en RAM. La méthode <code>readAsDataURL()</code> convertit ces octets binaires en leur représentation Base64 selon l\'algorithme RFC 4648 - chaque 3 octets de données originales sont représentés par 4 caractères ASCII de l\'alphabet Base64. Le résultat inclut le type MIME correct détecté automatiquement.',
111
+ },
112
+ {
113
+ type: 'tip',
114
+ title: 'Utilisez',
115
+ html: 'Base64 augmente la taille du fichier d\'environ 33%: une image de 10 Ko devient ~13,3 Ko de texte. Pour les petites icônes et logos, ce coût est minimal et l\'élimination de la requête HTTP le compense. Pour les photographies ou grandes images, le surcoût de taille est significatif - utilisez toujours un CDN pour les grandes images.',
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'Quand NE PAS utiliser Base64',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'tip',
124
+ title: 'Évitez Base64 pour les grandes images: utilisez un CDN',
125
+ html: 'Si vous avez des images de plus de 10-20 Ko, Base64 nuit aux performances: il gonfle la taille du HTML/CSS, empêche le navigateur de mettre l\'image en cache de façon indépendante, et bloque le rendu pendant que le parseur traite la chaîne géante. Pour les grandes images, servez toujours depuis un CDN avec des en-têtes de cache appropriés.',
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Compatibilité et confidentialité',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Les Data URIs sont compatibles avec 100% des navigateurs modernes et la plupart des clients de messagerie. Notre outil traite tout localement via l\'API FileReader - vos images ne quittent jamais votre appareil. Cela le rend adapté aux images d\'entreprise, aux captures d\'écran privées ou à tout contenu visuel confidentiel que vous devez convertir en Base64.',
135
+ },
136
+ {
137
+ type: 'title',
138
+ text: 'Conclusion: L\'outil d\'intégration le plus rapide et le plus privé',
139
+ level: 3,
140
+ },
141
+ {
142
+ type: 'paragraph',
143
+ html: 'Convertir des images en Base64 est une technique ciblée mais très puissante quand elle est appliquée correctement. Utilisez-la pour les petites images critiques où zéro requête HTTP fait la différence, et évitez-la pour les grandes images où un CDN gagne toujours. Avec notre outil, vous obtenez le Data URI en un instant, sans rien téléverser sur aucun serveur.',
144
+ },
145
+ ];
147
146
 
148
- export const content: ImagenBase64LocaleContent = {
149
- slug,
150
- title,
151
- description,
152
- ui,
153
- seo,
154
- faq,
155
- bibliography,
156
- howTo,
157
- schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
158
- };
147
+
148
+ export const content: ImagenBase64LocaleContent = {
149
+ slug,
150
+ title,
151
+ description,
152
+ ui,
153
+ seo,
154
+ faq,
155
+ bibliography,
156
+ howTo,
157
+ schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
158
+ };
@@ -1,15 +1,15 @@
1
- ---
2
- import { SEORenderer } from '@jjlmoya/utils-shared';
3
- import { imagenBase64 } from './index';
4
- import type { KnownLocale } from '../../types';
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const content = await imagenBase64.i18n[locale]?.();
12
- if (!content) return null;
13
- ---
14
-
15
- {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { imagenBase64 } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'es' } = Astro.props;
11
+ const content = await imagenBase64.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -1,15 +1,15 @@
1
- ---
2
- import { SEORenderer } from '@jjlmoya/utils-shared';
3
- import { jpgAIco } from './index';
4
- import type { KnownLocale } from '../../types';
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const content = await jpgAIco.i18n[locale]?.();
12
- if (!content) return null;
13
- ---
14
-
15
- {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { jpgAIco } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'es' } = Astro.props;
11
+ const content = await jpgAIco.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}