@jjlmoya/utils-converters 1.24.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 (134) 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/entries.ts +6 -0
  12. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  13. package/src/tests/category_seo_quality.test.ts +74 -0
  14. package/src/tests/faq_count.test.ts +1 -1
  15. package/src/tests/no_h1_in_components.test.ts +1 -1
  16. package/src/tests/seo_parity.test.ts +2 -2
  17. package/src/tests/seo_wellformed_export.test.ts +65 -0
  18. package/src/tests/tool_validation.test.ts +15 -15
  19. package/src/tool/avifAJpg/i18n/en.ts +164 -164
  20. package/src/tool/avifAJpg/i18n/es.ts +164 -164
  21. package/src/tool/avifAJpg/i18n/fr.ts +164 -164
  22. package/src/tool/avifAJpg/i18n/ja.ts +166 -166
  23. package/src/tool/avifAJpg/i18n/ko.ts +166 -166
  24. package/src/tool/avifAJpg/i18n/zh.ts +166 -166
  25. package/src/tool/avifAJpg/seo.astro +15 -15
  26. package/src/tool/avifAPng/i18n/en.ts +164 -164
  27. package/src/tool/avifAPng/i18n/es.ts +164 -164
  28. package/src/tool/avifAPng/i18n/fr.ts +164 -164
  29. package/src/tool/avifAPng/i18n/ja.ts +166 -166
  30. package/src/tool/avifAPng/i18n/ko.ts +166 -166
  31. package/src/tool/avifAPng/i18n/zh.ts +166 -166
  32. package/src/tool/avifAPng/seo.astro +15 -15
  33. package/src/tool/avifAWebp/i18n/en.ts +164 -164
  34. package/src/tool/avifAWebp/i18n/es.ts +164 -164
  35. package/src/tool/avifAWebp/i18n/fr.ts +164 -164
  36. package/src/tool/avifAWebp/i18n/ja.ts +166 -166
  37. package/src/tool/avifAWebp/i18n/ko.ts +166 -166
  38. package/src/tool/avifAWebp/i18n/zh.ts +166 -166
  39. package/src/tool/avifAWebp/seo.astro +15 -15
  40. package/src/tool/bmpAJpg/i18n/en.ts +164 -164
  41. package/src/tool/bmpAJpg/i18n/es.ts +164 -164
  42. package/src/tool/bmpAJpg/i18n/fr.ts +164 -164
  43. package/src/tool/bmpAJpg/i18n/ja.ts +166 -166
  44. package/src/tool/bmpAJpg/i18n/ko.ts +166 -166
  45. package/src/tool/bmpAJpg/i18n/zh.ts +166 -166
  46. package/src/tool/bmpAJpg/seo.astro +15 -15
  47. package/src/tool/bmpAPng/i18n/en.ts +164 -164
  48. package/src/tool/bmpAPng/i18n/es.ts +164 -164
  49. package/src/tool/bmpAPng/i18n/fr.ts +164 -164
  50. package/src/tool/bmpAPng/i18n/ja.ts +165 -165
  51. package/src/tool/bmpAPng/i18n/ko.ts +165 -165
  52. package/src/tool/bmpAPng/i18n/zh.ts +165 -165
  53. package/src/tool/bmpAPng/seo.astro +15 -15
  54. package/src/tool/bmpAWebp/i18n/en.ts +164 -164
  55. package/src/tool/bmpAWebp/i18n/es.ts +164 -164
  56. package/src/tool/bmpAWebp/i18n/fr.ts +164 -164
  57. package/src/tool/bmpAWebp/i18n/ja.ts +166 -166
  58. package/src/tool/bmpAWebp/i18n/ko.ts +166 -166
  59. package/src/tool/bmpAWebp/i18n/zh.ts +166 -166
  60. package/src/tool/bmpAWebp/seo.astro +15 -15
  61. package/src/tool/gifAJpg/i18n/en.ts +164 -164
  62. package/src/tool/gifAJpg/i18n/es.ts +164 -164
  63. package/src/tool/gifAJpg/i18n/fr.ts +164 -164
  64. package/src/tool/gifAJpg/i18n/ja.ts +166 -166
  65. package/src/tool/gifAJpg/i18n/ko.ts +166 -166
  66. package/src/tool/gifAJpg/i18n/zh.ts +166 -166
  67. package/src/tool/gifAJpg/seo.astro +15 -15
  68. package/src/tool/gifAPng/i18n/en.ts +164 -164
  69. package/src/tool/gifAPng/i18n/es.ts +164 -164
  70. package/src/tool/gifAPng/i18n/fr.ts +164 -164
  71. package/src/tool/gifAPng/i18n/ja.ts +166 -166
  72. package/src/tool/gifAPng/i18n/ko.ts +166 -166
  73. package/src/tool/gifAPng/i18n/zh.ts +166 -166
  74. package/src/tool/gifAPng/seo.astro +15 -15
  75. package/src/tool/gifAWebp/i18n/en.ts +164 -164
  76. package/src/tool/gifAWebp/i18n/es.ts +164 -164
  77. package/src/tool/gifAWebp/i18n/fr.ts +164 -164
  78. package/src/tool/gifAWebp/i18n/ja.ts +166 -166
  79. package/src/tool/gifAWebp/i18n/ko.ts +166 -166
  80. package/src/tool/gifAWebp/i18n/zh.ts +166 -166
  81. package/src/tool/gifAWebp/seo.astro +15 -15
  82. package/src/tool/imagenBase64/i18n/en.ts +154 -154
  83. package/src/tool/imagenBase64/i18n/es.ts +154 -154
  84. package/src/tool/imagenBase64/i18n/fr.ts +154 -154
  85. package/src/tool/imagenBase64/seo.astro +15 -15
  86. package/src/tool/jpgAIco/seo.astro +15 -15
  87. package/src/tool/jpgAPng/i18n/en.ts +164 -164
  88. package/src/tool/jpgAPng/i18n/es.ts +164 -164
  89. package/src/tool/jpgAPng/i18n/fr.ts +164 -164
  90. package/src/tool/jpgAPng/i18n/ja.ts +166 -166
  91. package/src/tool/jpgAPng/i18n/ko.ts +166 -166
  92. package/src/tool/jpgAPng/i18n/zh.ts +166 -166
  93. package/src/tool/jpgAPng/seo.astro +15 -15
  94. package/src/tool/jpgAWebp/i18n/en.ts +164 -164
  95. package/src/tool/jpgAWebp/i18n/es.ts +164 -164
  96. package/src/tool/jpgAWebp/i18n/fr.ts +164 -164
  97. package/src/tool/jpgAWebp/seo.astro +15 -15
  98. package/src/tool/pngAIco/seo.astro +15 -15
  99. package/src/tool/pngAJpg/i18n/de.ts +21 -21
  100. package/src/tool/pngAJpg/i18n/es.ts +177 -177
  101. package/src/tool/pngAJpg/i18n/fr.ts +137 -137
  102. package/src/tool/pngAJpg/i18n/id.ts +89 -89
  103. package/src/tool/pngAJpg/i18n/it.ts +89 -89
  104. package/src/tool/pngAJpg/i18n/ko.ts +177 -177
  105. package/src/tool/pngAJpg/i18n/nl.ts +20 -20
  106. package/src/tool/pngAJpg/i18n/pl.ts +89 -89
  107. package/src/tool/pngAJpg/i18n/pt.ts +89 -89
  108. package/src/tool/pngAJpg/i18n/ru.ts +177 -177
  109. package/src/tool/pngAJpg/i18n/sv.ts +89 -89
  110. package/src/tool/pngAJpg/i18n/tr.ts +89 -89
  111. package/src/tool/pngAJpg/seo.astro +15 -15
  112. package/src/tool/pngAWebp/i18n/en.ts +164 -164
  113. package/src/tool/pngAWebp/i18n/es.ts +164 -164
  114. package/src/tool/pngAWebp/i18n/fr.ts +164 -164
  115. package/src/tool/pngAWebp/seo.astro +15 -15
  116. package/src/tool/svgAJpg/i18n/fr.ts +164 -164
  117. package/src/tool/svgAJpg/seo.astro +15 -15
  118. package/src/tool/svgAPng/i18n/fr.ts +164 -164
  119. package/src/tool/svgAPng/seo.astro +15 -15
  120. package/src/tool/webpAIco/seo.astro +15 -15
  121. package/src/tool/webpAJpg/seo.astro +15 -15
  122. package/src/tool/webpAPng/bibliography.ts +13 -13
  123. package/src/tool/webpAPng/i18n/de.ts +166 -166
  124. package/src/tool/webpAPng/i18n/es.ts +171 -171
  125. package/src/tool/webpAPng/i18n/fr.ts +166 -166
  126. package/src/tool/webpAPng/i18n/id.ts +166 -166
  127. package/src/tool/webpAPng/i18n/it.ts +166 -166
  128. package/src/tool/webpAPng/i18n/nl.ts +166 -166
  129. package/src/tool/webpAPng/i18n/pl.ts +166 -166
  130. package/src/tool/webpAPng/i18n/pt.ts +166 -166
  131. package/src/tool/webpAPng/i18n/ru.ts +166 -166
  132. package/src/tool/webpAPng/i18n/sv.ts +166 -166
  133. package/src/tool/webpAPng/i18n/tr.ts +167 -167
  134. 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 { SvgAPngLocaleContent } from '../index';
5
-
6
- const slug = 'convertisseur-svg-en-png';
7
- const title = 'Convertir SVG en PNG en Ligne et Gratuitement';
8
- const description =
9
- 'Convertissez des fichiers SVG vectoriels en PNG dans votre navigateur. Sortie HD à double échelle. Préserve la transparence. Gratuit et 100% privé.';
10
-
11
- const ui: ImageConverterUI = {
12
- dragText: 'Faites glisser des fichiers SVG...',
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 { SvgAPngLocaleContent } from '../index';
5
+
6
+ const slug = 'convertisseur-svg-en-png';
7
+ const title = 'Convertir SVG en PNG en Ligne et Gratuitement';
8
+ const description =
9
+ 'Convertissez des fichiers SVG vectoriels en PNG dans votre navigateur. Sortie HD à double échelle. Préserve la transparence. Gratuit et 100% privé.';
10
+
11
+ const ui: ImageConverterUI = {
12
+ dragText: 'Faites glisser des fichiers SVG...',
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: SvgAPngLocaleContent['faq'] = [
23
- {
24
- question: 'Pourquoi convertir des fichiers SVG en PNG ?',
25
- answer:
26
- 'SVG est vectoriel et idéal pour les logos, mais parfois vous avez besoin du format PNG rastérisé pour l\'utiliser dans des applications qui ne supportent pas les vecteurs, ou pour le partager sur les réseaux sociaux.',
27
- },
28
- {
29
- question: 'Puis-je choisir la taille de sortie ?',
30
- answer:
31
- 'Nous doublons actuellement l\'échelle du SVG source pour que la sortie PNG soit nette et adaptée aux écrans Retina ou 4K.',
32
- },
33
- {
34
- question: 'Les transparences SVG sont-elles maintenues ?',
35
- answer:
36
- 'Oui, le PNG résultant préserve le canal alpha du SVG original, maintenant tous les fonds transparents intacts.',
37
- },
38
- ];
39
-
40
- const howTo: SvgAPngLocaleContent['howTo'] = [
41
- {
42
- name: 'Insérez vos fichiers SVG',
43
- text: 'Déposez vos fichiers SVG ou faites-les glisser directement dans la zone supérieure.',
44
- },
45
- {
46
- name: 'Génération du PNG HD',
47
- text: 'En quelques millisecondes, notre moteur local recrée chaque vecteur en une couche de pixels HD au format PNG transparent.',
48
- },
49
- {
50
- name: 'Téléchargez les fichiers',
51
- text: 'Sauvegardez les PNG générés individuellement ou dans un package ZIP.',
52
- },
53
- ];
54
-
55
- const seo: SvgAPngLocaleContent['seo'] = [
56
- {
57
- type: 'title',
58
- text: 'Convertisseur SVG vers PNG: Du Vecteur Infini au Raster Universel',
59
- level: 2,
60
- },
61
- {
62
- type: 'paragraph',
63
- html: '<strong>SVG</strong> (Scalable Vector Graphics) est le choix parfait pour le design web: infiniment évolutif, léger et éditable avec n\'importe quel éditeur de code. Mais lorsque vous devez utiliser ce logo ou cette icône dans une application mobile, le partager sur les réseaux sociaux ou l\'insérer dans une présentation PowerPoint, vous vous heurtez à un obstacle: la plupart de ces plateformes ne supportent pas le SVG. Le format <strong>PNG</strong> est la solution universelle: rastérisé, avec canal alpha, compatible dans absolument tous les contextes.',
64
- },
65
- {
66
- type: 'title',
67
- text: 'SVG vs PNG: Vecteurs pour le Web, Raster pour le Monde',
68
- level: 3,
69
- },
70
- {
71
- type: 'paragraph',
72
- html: 'SVG stocke l\'image sous forme d\'instructions mathématiques: une courbe de Bézier, un dégradé, un polygone. Cela signifie que le même fichier est parfaitement net à 16px comme à 16 000px. C\'est le format idéal pour votre code web, les animations CSS et tout élément devant s\'adapter à différentes résolutions d\'écran sans perte de qualité.',
73
- },
74
- {
75
- type: 'paragraph',
76
- html: 'PNG stocke l\'image comme une grille de pixels avec des informations de couleur et de transparence pour chacun. C\'est un format <strong>sans perte</strong>, ce qui signifie que la qualité est préservée intégralement. Une fois qu\'un SVG est rastérisé en PNG, la résolution est fixée. C\'est pourquoi le choix de la taille d\'export est crucial: notre outil effectue le rendu à double échelle (2x) pour garantir la netteté sur les écrans Retina et 4K.',
77
- },
78
- {
79
- type: 'title',
80
- text: 'Comparatif: Conversion Locale vs Cloud',
81
- level: 3,
82
- },
83
- {
84
- type: 'comparative',
85
- items: [
86
- {
87
- title: 'Convertisseurs Cloud',
88
- description: 'Outils qui téléchargent vos fichiers vers un serveur distant.',
89
- icon: 'mdi:cloud-upload',
90
- pointIcon: 'mdi:close-circle-outline',
91
- points: [
92
- 'Votre code SVG transite vers des serveurs externes',
93
- 'Rendu distant avec qualité inconsistante',
94
- 'Temps d\'attente pour l\'upload et le traitement',
95
- 'Limitations sur la taille des fichiers SVG',
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
- 'Votre SVG ne quitte jamais votre navigateur',
105
- 'Rendu par le moteur natif du navigateur, fidélité maximale',
106
- 'PNG en résolution 2x pour les écrans haute densité',
107
- 'Transparences préservées avec canal alpha complet',
108
- ],
109
- },
110
- ],
111
- },
112
- {
113
- type: 'title',
114
- text: 'Comment ça fonctionne techniquement',
115
- level: 3,
116
- },
117
- {
118
- type: 'paragraph',
119
- html: 'Le processus commence par le chargement du fichier SVG dans un élément JavaScript <strong>Image</strong>. Une fois que le moteur du navigateur a analysé et rendu le XML vectoriel, l\'image résultante est dessinée sur un <strong>Canvas HTML5</strong> dont les dimensions sont le double de la taille SVG originale (échelle 2x). Cela produit un PNG avec deux fois plus de pixels par dimension, idéal pour les écrans haute résolution.',
120
- },
121
- {
122
- type: 'paragraph',
123
- html: 'Contrairement à la conversion en JPG, lors de l\'export en PNG le canvas conserve le canal alpha complet: les zones transparentes du SVG original deviennent des pixels entièrement transparents dans le PNG résultant - sans remplissage de fond blanc. L\'export utilise la méthode <code>toDataURL(\'image/png\')</code> avec compression sans perte.',
124
- },
125
- {
126
- type: 'tip',
127
- title: 'Conseil avant de rastériser',
128
- html: 'Choisissez soigneusement la taille d\'export du PNG - rastériser un SVG est un processus à sens unique: vous ne pourrez pas récupérer les vecteurs depuis le PNG résultant. Conservez toujours le SVG original comme source maîtresse, et générez les PNG à la résolution la plus élevée dont vous pourriez avoir besoin.',
129
- },
130
- {
131
- type: 'title',
132
- text: 'Cas d\'usage et compatibilité',
133
- level: 3,
134
- },
135
- {
136
- type: 'list',
137
- icon: 'mdi:check-circle',
138
- items: [
139
- 'Exporter des logos vectoriels pour des présentations PowerPoint ou Google Slides.',
140
- 'Créer des icônes PNG pour les applications iOS, Android ou Progressive Web Apps.',
141
- 'Partager des designs SVG sur Instagram, LinkedIn ou d\'autres réseaux sociaux.',
142
- 'Insérer des illustrations vectorielles dans des documents Word ou PDF.',
143
- 'Générer des miniatures PNG de graphiques SVG pour la prévisualisation CMS.',
144
- ],
145
- },
146
- {
147
- type: 'title',
148
- text: 'Conclusion',
149
- level: 3,
150
- },
151
- {
152
- type: 'paragraph',
153
- html: 'SVG est le langage des vecteurs ; PNG est le passeport vers le reste du monde numérique. Cet outil rastérise vos SVG en résolution 2x avec les transparences intactes, directement dans votre navigateur, sans qu\'un seul octet de votre design ne transite vers un serveur externe.',
154
- },
155
- ];
156
-
18
+ bibliographyTitle: 'Références Bibliographiques',
19
+ faqTitle: 'Questions Fréquentes',
20
+ };
21
+
22
+ const faq: SvgAPngLocaleContent['faq'] = [
23
+ {
24
+ question: 'Pourquoi convertir des fichiers SVG en PNG ?',
25
+ answer:
26
+ 'SVG est vectoriel et idéal pour les logos, mais parfois vous avez besoin du format PNG rastérisé pour l\'utiliser dans des applications qui ne supportent pas les vecteurs, ou pour le partager sur les réseaux sociaux.',
27
+ },
28
+ {
29
+ question: 'Puis-je choisir la taille de sortie ?',
30
+ answer:
31
+ 'Nous doublons actuellement l\'échelle du SVG source pour que la sortie PNG soit nette et adaptée aux écrans Retina ou 4K.',
32
+ },
33
+ {
34
+ question: 'Les transparences SVG sont-elles maintenues ?',
35
+ answer:
36
+ 'Oui, le PNG résultant préserve le canal alpha du SVG original, maintenant tous les fonds transparents intacts.',
37
+ },
38
+ ];
39
+
40
+ const howTo: SvgAPngLocaleContent['howTo'] = [
41
+ {
42
+ name: 'Insérez vos fichiers SVG',
43
+ text: 'Déposez vos fichiers SVG ou faites-les glisser directement dans la zone supérieure.',
44
+ },
45
+ {
46
+ name: 'Génération du PNG HD',
47
+ text: 'En quelques millisecondes, notre moteur local recrée chaque vecteur en une couche de pixels HD au format PNG transparent.',
48
+ },
49
+ {
50
+ name: 'Téléchargez les fichiers',
51
+ text: 'Sauvegardez les PNG générés individuellement ou dans un package ZIP.',
52
+ },
53
+ ];
54
+
55
+ const seo: SvgAPngLocaleContent['seo'] = [
56
+ {
57
+ type: 'title',
58
+ text: 'Convertisseur SVG vers PNG: Du Vecteur Infini au Raster Universel',
59
+ level: 2,
60
+ },
61
+ {
62
+ type: 'paragraph',
63
+ html: '<strong>SVG</strong> (Scalable Vector Graphics) est le choix parfait pour le design web: infiniment évolutif, léger et éditable avec n\'importe quel éditeur de code. Mais lorsque vous devez utiliser ce logo ou cette icône dans une application mobile, le partager sur les réseaux sociaux ou l\'insérer dans une présentation PowerPoint, vous vous heurtez à un obstacle: la plupart de ces plateformes ne supportent pas le SVG. Le format <strong>PNG</strong> est la solution universelle: rastérisé, avec canal alpha, compatible dans absolument tous les contextes.',
64
+ },
65
+ {
66
+ type: 'title',
67
+ text: 'SVG vs PNG: Vecteurs pour le Web, Raster pour le Monde',
68
+ level: 3,
69
+ },
70
+ {
71
+ type: 'paragraph',
72
+ html: 'SVG stocke l\'image sous forme d\'instructions mathématiques: une courbe de Bézier, un dégradé, un polygone. Cela signifie que le même fichier est parfaitement net à 16px comme à 16 000px. C\'est le format idéal pour votre code web, les animations CSS et tout élément devant s\'adapter à différentes résolutions d\'écran sans perte de qualité.',
73
+ },
74
+ {
75
+ type: 'paragraph',
76
+ html: 'PNG stocke l\'image comme une grille de pixels avec des informations de couleur et de transparence pour chacun. C\'est un format <strong>sans perte</strong>, ce qui signifie que la qualité est préservée intégralement. Une fois qu\'un SVG est rastérisé en PNG, la résolution est fixée. C\'est pourquoi le choix de la taille d\'export est crucial: notre outil effectue le rendu à double échelle (2x) pour garantir la netteté sur les écrans Retina et 4K.',
77
+ },
78
+ {
79
+ type: 'title',
80
+ text: 'Comparatif: Conversion Locale vs Cloud',
81
+ level: 3,
82
+ },
83
+ {
84
+ type: 'comparative',
85
+ items: [
86
+ {
87
+ title: 'Convertisseurs Cloud',
88
+ description: 'Outils qui téléchargent vos fichiers vers un serveur distant.',
89
+ icon: 'mdi:cloud-upload',
90
+ pointIcon: 'mdi:close-circle-outline',
91
+ points: [
92
+ 'Votre code SVG transite vers des serveurs externes',
93
+ 'Rendu distant avec qualité inconsistante',
94
+ 'Temps d\'attente pour l\'upload et le traitement',
95
+ 'Limitations sur la taille des fichiers SVG',
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
+ 'Votre SVG ne quitte jamais votre navigateur',
105
+ 'Rendu par le moteur natif du navigateur, fidélité maximale',
106
+ 'PNG en résolution 2x pour les écrans haute densité',
107
+ 'Transparences préservées avec canal alpha complet',
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ {
113
+ type: 'title',
114
+ text: 'Comment ça fonctionne techniquement',
115
+ level: 3,
116
+ },
117
+ {
118
+ type: 'paragraph',
119
+ html: 'Le processus commence par le chargement du fichier SVG dans un élément JavaScript <strong>Image</strong>. Une fois que le moteur du navigateur a analysé et rendu le XML vectoriel, l\'image résultante est dessinée sur un <strong>Canvas HTML5</strong> dont les dimensions sont le double de la taille SVG originale (échelle 2x). Cela produit un PNG avec deux fois plus de pixels par dimension, idéal pour les écrans haute résolution.',
120
+ },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'Contrairement à la conversion en JPG, lors de l\'export en PNG le canvas conserve le canal alpha complet: les zones transparentes du SVG original deviennent des pixels entièrement transparents dans le PNG résultant - sans remplissage de fond blanc. L\'export utilise la méthode <code>toDataURL(\'image/png\')</code> avec compression sans perte.',
124
+ },
125
+ {
126
+ type: 'tip',
127
+ title: 'Conseil avant de rastériser',
128
+ html: 'Choisissez soigneusement la taille d\'export du PNG - rastériser un SVG est un processus à sens unique: vous ne pourrez pas récupérer les vecteurs depuis le PNG résultant. Conservez toujours le SVG original comme source maîtresse, et générez les PNG à la résolution la plus élevée dont vous pourriez avoir besoin.',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Cas d\'usage et compatibilité',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'list',
137
+ icon: 'mdi:check-circle',
138
+ items: [
139
+ 'Exporter des logos vectoriels pour des présentations PowerPoint ou Google Slides.',
140
+ 'Créer des icônes PNG pour les applications iOS, Android ou Progressive Web Apps.',
141
+ 'Partager des designs SVG sur Instagram, LinkedIn ou d\'autres réseaux sociaux.',
142
+ 'Insérer des illustrations vectorielles dans des documents Word ou PDF.',
143
+ 'Générer des miniatures PNG de graphiques SVG pour la prévisualisation CMS.',
144
+ ],
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'Conclusion',
149
+ level: 3,
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: 'SVG est le langage des vecteurs ; PNG est le passeport vers le reste du monde numérique. Cet outil rastérise vos SVG en résolution 2x avec les transparences intactes, directement dans votre navigateur, sans qu\'un seul octet de votre design ne transite vers un serveur externe.',
154
+ },
155
+ ];
157
156
 
158
- export const content: SvgAPngLocaleContent = {
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: SvgAPngLocaleContent = {
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
+ };
@@ -1,15 +1,15 @@
1
- ---
2
- import { SEORenderer } from '@jjlmoya/utils-shared';
3
- import { svgAPng } 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 svgAPng.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 { svgAPng } 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 svgAPng.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 { webpAIco } 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 webpAIco.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 { webpAIco } 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 webpAIco.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 { webpAJpg } 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 webpAJpg.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 { webpAJpg } 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 webpAJpg.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -1,16 +1,16 @@
1
1
  import type { BibliographyEntry } from '../../types';
2
2
 
3
- export const bibliography: BibliographyEntry[] = [
4
- {
5
- name: 'Dokumentation der WebP-API und -Bibliothek',
6
- url: 'https://developers.google.com/speed/webp/docs/api',
7
- },
8
- {
9
- name: 'HTML Canvas 2D Kontext Spezifikation',
10
- url: 'https://html.spec.whatwg.org/multipage/canvas.html',
11
- },
12
- {
13
- name: 'Can I use: WebP-Bildformat',
14
- url: 'https://caniuse.com/webp',
15
- },
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Dokumentation der WebP-API und -Bibliothek',
6
+ url: 'https://developers.google.com/speed/webp/docs/api',
7
+ },
8
+ {
9
+ name: 'HTML Canvas 2D Kontext Spezifikation',
10
+ url: 'https://html.spec.whatwg.org/multipage/canvas.html',
11
+ },
12
+ {
13
+ name: 'Can I use: WebP-Bildformat',
14
+ url: 'https://caniuse.com/webp',
15
+ },
16
16
  ];