@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,168 +1,168 @@
1
1
  import { bibliography } from '../bibliography';
2
- import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
3
3
  import { generateSchemas } from '../../../shared/logic/schemas';
4
- import type { GifAPngLocaleContent } from '../index';
5
-
6
- const slug = 'convertisseur-gif-en-png';
7
- const title = 'Convertir GIF en PNG en Ligne';
8
- const description =
9
- 'Extrayez la première image de vos GIF et convertissez en PNG en préservant la transparence. Sans serveur. Traitement local. Gratuit.';
10
-
11
- const ui: ImageConverterUI = {
12
- dragText: 'Faites glisser des fichiers GIF...',
13
- convertText: 'Pour les convertir en PNG instantanément',
14
- selectFiles: 'Sélectionner des fichiers',
15
- processedFiles: 'Fichiers traités',
16
- downloadAll: 'Tout télécharger (.zip)',
4
+ import type { GifAPngLocaleContent } from '../index';
5
+
6
+ const slug = 'convertisseur-gif-en-png';
7
+ const title = 'Convertir GIF en PNG en Ligne';
8
+ const description =
9
+ 'Extrayez la première image de vos GIF et convertissez en PNG en préservant la transparence. Sans serveur. Traitement local. Gratuit.';
10
+
11
+ const ui: ImageConverterUI = {
12
+ dragText: 'Faites glisser des fichiers GIF...',
13
+ convertText: 'Pour les convertir en PNG instantanément',
14
+ selectFiles: 'Sélectionner des fichiers',
15
+ processedFiles: 'Fichiers traités',
16
+ downloadAll: 'Tout télécharger (.zip)',
17
17
  pending: 'En attente',
18
- bibliographyTitle: 'Références Bibliographiques',
19
- faqTitle: 'Questions Fréquentes',
20
- };
21
-
22
- const faq: GifAPngLocaleContent['faq'] = [
23
- {
24
- question: 'Pourquoi convertir un format animé comme GIF en un format statique comme PNG ?',
25
- answer:
26
- 'De nombreux réseaux sociaux ou avatars n\'acceptent pas les photographies changeantes. Extraire la première image d\'un GIF complexe vers un PNG de haute qualité résout les barrières de compatibilité et réduit le poids inutile des fichiers.',
27
- },
28
- {
29
- question: 'Les transparences de l\'ancien GIF sont-elles conservées dans le PNG résultant ?',
30
- answer:
31
- 'Oui, contrairement au JPG, le format PNG maintient le canal alpha. Si le GIF avait un fond transparent, le PNG le conservera avec des bords nets.',
32
- },
33
- {
34
- question: 'Conservez-vous mes images sur des serveurs après le traitement ?',
35
- answer:
36
- 'Aucun serveur ne retient votre GIF ; toute l\'extraction est locale grâce à l\'API Canvas Web. C\'est le processeur de votre PC qui décode en toute sécurité votre fichier sans aucun contact réseau.',
37
- },
38
- ];
39
-
40
- const howTo: GifAPngLocaleContent['howTo'] = [
41
- {
42
- name: 'Apportez-nous l\'animation',
43
- text: 'Déposez les fichiers GIF lourds dans la boîte d\'insertion.',
44
- },
45
- {
46
- name: 'Photo extraite parfaite',
47
- text: 'Le système se figera à l\'origine exacte du mouvement, produisant la copie impeccable en millisecondes.',
48
- },
49
- {
50
- name: 'Sauvegardez votre image statique',
51
- text: 'Stockez en vrac dans ZIP tous ces volumes d\'avatars GIF statiques convertis en PNG.',
52
- },
53
- ];
54
-
55
- const seo: GifAPngLocaleContent['seo'] = [
56
- {
57
- type: 'title',
58
- text: 'Convertisseur GIF vers PNG: Dépassez les Limites de Couleurs et de Transparence du GIF',
59
- level: 2,
60
- },
61
- {
62
- type: 'paragraph',
63
- html: 'Le GIF a été conçu à une époque où les moniteurs pouvaient à peine afficher 256 couleurs. Des décennies plus tard, cette limitation reste sa plus grande faiblesse. Le PNG a été créé précisément pour remplacer le GIF dans tous les cas d\'usage où la qualité et la transparence importent: logos, icônes, graphiques d\'interface et toute image à fond transparent devant s\'afficher parfaitement sur n\'importe quelle couleur de fond.',
64
- },
65
- {
66
- type: 'title',
67
- text: 'GIF vs PNG: la révolution des 16 millions de couleurs',
68
- level: 3,
69
- },
70
- {
71
- type: 'paragraph',
72
- html: 'La différence la plus critique entre GIF et PNG n\'est pas seulement le nombre de couleurs. Le GIF supporte une transparence binaire: chaque pixel est soit opaque soit totalement transparent, sans gradation. Le PNG, en revanche, supporte un canal alpha complet avec 256 niveaux d\'opacité par pixel. Cela signifie que les bords d\'un logo en PNG peuvent être parfaitement lissés, tandis que ceux du GIF affichent un crénelage caractéristique sur les fonds colorés.',
73
- },
74
- {
75
- type: 'paragraph',
76
- html: 'En plus d\'une transparence supérieure, le PNG supprime la limite de 256 couleurs du GIF. Captures d\'écran, illustrations avec dégradés, logos avec ombres - tout s\'affiche bien mieux en PNG. Et comme il utilise une compression sans perte, chaque pixel conserve sa valeur exacte d\'origine, sans les artefacts qu\'une conversion JPG introduirait.',
77
- },
78
- {
79
- type: 'title',
80
- text: 'Comparaison d\'Architecture: Local vs Cloud',
81
- level: 3,
82
- },
83
- {
84
- type: 'comparative',
85
- items: [
86
- {
87
- title: 'Convertisseurs Cloud',
88
- description: 'Outils qui traitent vos images sur des serveurs distants.',
89
- icon: 'mdi:cloud-upload',
90
- pointIcon: 'mdi:close-circle-outline',
91
- points: [
92
- 'Vos logos et icônes transitent sur internet',
93
- 'Temps d\'attente dû à la latence réseau',
94
- 'Limites de taille et de nombre de fichiers',
95
- 'Vos images peuvent rester dans des caches tiers',
96
- ],
97
- },
98
- {
99
- title: 'Notre Architecture Locale',
100
- description: 'Traitement direct sur votre matériel via la technologie Vanilla JS.',
101
- icon: 'mdi:laptop-mac',
102
- highlight: true,
103
- points: [
104
- 'Le GIF ne quitte jamais votre appareil',
105
- 'Conversion instantanée sans réseau',
106
- 'Aucune limite de fichiers ni de taille',
107
- 'Confidentialité absolue: 0 octet envoyé',
108
- ],
109
- },
110
- ],
111
- },
112
- {
113
- type: 'title',
114
- text: 'Comment fonctionne la conversion locale GIF vers PNG',
115
- level: 3,
116
- },
117
- {
118
- type: 'paragraph',
119
- html: 'La conversion utilise l\'API Canvas du navigateur. Le GIF est décodé en mémoire sous forme d\'élément Image natif. En le rendant sur un canvas HTML5, le moteur graphique du navigateur capture la première image avec toutes ses informations de transparence d\'origine intactes.',
120
- },
121
- {
122
- type: 'paragraph',
123
- html: 'Contrairement à une conversion JPG, avec le PNG il n\'est pas nécessaire d\'ajouter un fond blanc. Le canal alpha du GIF original est préservé directement dans le PNG exporté. La méthode <code>toDataURL(\'image/png\')</code> du canvas génère le flux d\'octets PNG dans la RAM de votre ordinateur, sans aucune transmission réseau, et le fichier est téléchargé directement.',
124
- },
125
- {
126
- type: 'tip',
127
- title: 'Transparence binaire du GIF vs canal alpha complet du PNG',
128
- html: 'Le GIF ne supporte que la transparence binaire (opaque ou transparent). Lors de la conversion en PNG, les pixels semi-transparents du GIF sont préservés tels que le navigateur les interprète. Si votre GIF a des bords crénelés, le PNG les conservera - mais vous pourrez ensuite les lisser avec un anti-aliasing dans n\'importe quel éditeur, chose impossible avec le GIF original.',
129
- },
130
- {
131
- type: 'title',
132
- text: 'Cas d\'usage et compatibilité du PNG résultant',
133
- level: 3,
134
- },
135
- {
136
- type: 'list',
137
- icon: 'mdi:check-circle',
138
- items: [
139
- 'Logos et icônes utilisables sur n\'importe quelle couleur de fond.',
140
- 'Avatars pour Discord, Telegram, Slack et plateformes de jeu.',
141
- 'Graphiques d\'interface pour applications web et mobiles.',
142
- 'Stickers et emojis personnalisés à fond transparent.',
143
- 'Captures d\'écran et éléments UI pour la documentation technique.',
144
- ],
145
- },
146
- {
147
- type: 'title',
148
- text: 'Conclusion: le PNG est ce que le GIF a toujours voulu être',
149
- level: 3,
150
- },
151
- {
152
- type: 'paragraph',
153
- html: 'Convertir un GIF en PNG n\'est pas seulement changer de format: c\'est mettre à jour une image vers le standard moderne que le GIF n\'a jamais pu atteindre. Plus de couleurs, meilleure transparence, moins de poids. Notre outil effectue cette conversion en quelques millisecondes, directement dans votre navigateur, sans envoyer aucune donnée à l\'extérieur.',
154
- },
155
- ];
156
-
18
+ bibliographyTitle: 'Références Bibliographiques',
19
+ faqTitle: 'Questions Fréquentes',
20
+ };
21
+
22
+ const faq: GifAPngLocaleContent['faq'] = [
23
+ {
24
+ question: 'Pourquoi convertir un format animé comme GIF en un format statique comme PNG ?',
25
+ answer:
26
+ 'De nombreux réseaux sociaux ou avatars n\'acceptent pas les photographies changeantes. Extraire la première image d\'un GIF complexe vers un PNG de haute qualité résout les barrières de compatibilité et réduit le poids inutile des fichiers.',
27
+ },
28
+ {
29
+ question: 'Les transparences de l\'ancien GIF sont-elles conservées dans le PNG résultant ?',
30
+ answer:
31
+ 'Oui, contrairement au JPG, le format PNG maintient le canal alpha. Si le GIF avait un fond transparent, le PNG le conservera avec des bords nets.',
32
+ },
33
+ {
34
+ question: 'Conservez-vous mes images sur des serveurs après le traitement ?',
35
+ answer:
36
+ 'Aucun serveur ne retient votre GIF ; toute l\'extraction est locale grâce à l\'API Canvas Web. C\'est le processeur de votre PC qui décode en toute sécurité votre fichier sans aucun contact réseau.',
37
+ },
38
+ ];
39
+
40
+ const howTo: GifAPngLocaleContent['howTo'] = [
41
+ {
42
+ name: 'Apportez-nous l\'animation',
43
+ text: 'Déposez les fichiers GIF lourds dans la boîte d\'insertion.',
44
+ },
45
+ {
46
+ name: 'Photo extraite parfaite',
47
+ text: 'Le système se figera à l\'origine exacte du mouvement, produisant la copie impeccable en millisecondes.',
48
+ },
49
+ {
50
+ name: 'Sauvegardez votre image statique',
51
+ text: 'Stockez en vrac dans ZIP tous ces volumes d\'avatars GIF statiques convertis en PNG.',
52
+ },
53
+ ];
54
+
55
+ const seo: GifAPngLocaleContent['seo'] = [
56
+ {
57
+ type: 'title',
58
+ text: 'Convertisseur GIF vers PNG: Dépassez les Limites de Couleurs et de Transparence du GIF',
59
+ level: 2,
60
+ },
61
+ {
62
+ type: 'paragraph',
63
+ html: 'Le GIF a été conçu à une époque où les moniteurs pouvaient à peine afficher 256 couleurs. Des décennies plus tard, cette limitation reste sa plus grande faiblesse. Le PNG a été créé précisément pour remplacer le GIF dans tous les cas d\'usage où la qualité et la transparence importent: logos, icônes, graphiques d\'interface et toute image à fond transparent devant s\'afficher parfaitement sur n\'importe quelle couleur de fond.',
64
+ },
65
+ {
66
+ type: 'title',
67
+ text: 'GIF vs PNG: la révolution des 16 millions de couleurs',
68
+ level: 3,
69
+ },
70
+ {
71
+ type: 'paragraph',
72
+ html: 'La différence la plus critique entre GIF et PNG n\'est pas seulement le nombre de couleurs. Le GIF supporte une transparence binaire: chaque pixel est soit opaque soit totalement transparent, sans gradation. Le PNG, en revanche, supporte un canal alpha complet avec 256 niveaux d\'opacité par pixel. Cela signifie que les bords d\'un logo en PNG peuvent être parfaitement lissés, tandis que ceux du GIF affichent un crénelage caractéristique sur les fonds colorés.',
73
+ },
74
+ {
75
+ type: 'paragraph',
76
+ html: 'En plus d\'une transparence supérieure, le PNG supprime la limite de 256 couleurs du GIF. Captures d\'écran, illustrations avec dégradés, logos avec ombres - tout s\'affiche bien mieux en PNG. Et comme il utilise une compression sans perte, chaque pixel conserve sa valeur exacte d\'origine, sans les artefacts qu\'une conversion JPG introduirait.',
77
+ },
78
+ {
79
+ type: 'title',
80
+ text: 'Comparaison d\'Architecture: Local vs Cloud',
81
+ level: 3,
82
+ },
83
+ {
84
+ type: 'comparative',
85
+ items: [
86
+ {
87
+ title: 'Convertisseurs Cloud',
88
+ description: 'Outils qui traitent vos images sur des serveurs distants.',
89
+ icon: 'mdi:cloud-upload',
90
+ pointIcon: 'mdi:close-circle-outline',
91
+ points: [
92
+ 'Vos logos et icônes transitent sur internet',
93
+ 'Temps d\'attente dû à la latence réseau',
94
+ 'Limites de taille et de nombre de fichiers',
95
+ 'Vos images peuvent rester dans des caches tiers',
96
+ ],
97
+ },
98
+ {
99
+ title: 'Notre Architecture Locale',
100
+ description: 'Traitement direct sur votre matériel via la technologie Vanilla JS.',
101
+ icon: 'mdi:laptop-mac',
102
+ highlight: true,
103
+ points: [
104
+ 'Le GIF ne quitte jamais votre appareil',
105
+ 'Conversion instantanée sans réseau',
106
+ 'Aucune limite de fichiers ni de taille',
107
+ 'Confidentialité absolue: 0 octet envoyé',
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ {
113
+ type: 'title',
114
+ text: 'Comment fonctionne la conversion locale GIF vers PNG',
115
+ level: 3,
116
+ },
117
+ {
118
+ type: 'paragraph',
119
+ html: 'La conversion utilise l\'API Canvas du navigateur. Le GIF est décodé en mémoire sous forme d\'élément Image natif. En le rendant sur un canvas HTML5, le moteur graphique du navigateur capture la première image avec toutes ses informations de transparence d\'origine intactes.',
120
+ },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'Contrairement à une conversion JPG, avec le PNG il n\'est pas nécessaire d\'ajouter un fond blanc. Le canal alpha du GIF original est préservé directement dans le PNG exporté. La méthode <code>toDataURL(\'image/png\')</code> du canvas génère le flux d\'octets PNG dans la RAM de votre ordinateur, sans aucune transmission réseau, et le fichier est téléchargé directement.',
124
+ },
125
+ {
126
+ type: 'tip',
127
+ title: 'Transparence binaire du GIF vs canal alpha complet du PNG',
128
+ html: 'Le GIF ne supporte que la transparence binaire (opaque ou transparent). Lors de la conversion en PNG, les pixels semi-transparents du GIF sont préservés tels que le navigateur les interprète. Si votre GIF a des bords crénelés, le PNG les conservera - mais vous pourrez ensuite les lisser avec un anti-aliasing dans n\'importe quel éditeur, chose impossible avec le GIF original.',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Cas d\'usage et compatibilité du PNG résultant',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'list',
137
+ icon: 'mdi:check-circle',
138
+ items: [
139
+ 'Logos et icônes utilisables sur n\'importe quelle couleur de fond.',
140
+ 'Avatars pour Discord, Telegram, Slack et plateformes de jeu.',
141
+ 'Graphiques d\'interface pour applications web et mobiles.',
142
+ 'Stickers et emojis personnalisés à fond transparent.',
143
+ 'Captures d\'écran et éléments UI pour la documentation technique.',
144
+ ],
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'Conclusion: le PNG est ce que le GIF a toujours voulu être',
149
+ level: 3,
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: 'Convertir un GIF en PNG n\'est pas seulement changer de format: c\'est mettre à jour une image vers le standard moderne que le GIF n\'a jamais pu atteindre. Plus de couleurs, meilleure transparence, moins de poids. Notre outil effectue cette conversion en quelques millisecondes, directement dans votre navigateur, sans envoyer aucune donnée à l\'extérieur.',
154
+ },
155
+ ];
157
156
 
158
- export const content: GifAPngLocaleContent = {
159
- slug,
160
- title,
161
- description,
162
- ui,
163
- seo,
164
- faq,
165
- bibliography,
166
- howTo,
167
- schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
168
- };
157
+
158
+ export const content: GifAPngLocaleContent = {
159
+ slug,
160
+ title,
161
+ description,
162
+ ui,
163
+ seo,
164
+ faq,
165
+ bibliography,
166
+ howTo,
167
+ schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
168
+ };