@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 { GifAPngLocaleContent } from '../index';
5
-
6
- const slug = 'convertidor-gif-a-png';
7
- const title = 'Convertir GIF a PNG Online';
8
- const description =
9
- 'Extrae el primer fotograma de tus GIF y conviértelo a PNG preservando transparencias. Sin servidor. Procesado local. Gratis.';
10
-
11
- const ui: ImageConverterUI = {
12
- dragText: 'Arrastra archivos GIF...',
13
- convertText: 'Para convertirlos a PNG al instante',
14
- selectFiles: 'Seleccionar archivos',
15
- processedFiles: 'Archivos procesados',
16
- downloadAll: 'Descargar Todo (.zip)',
4
+ import type { GifAPngLocaleContent } from '../index';
5
+
6
+ const slug = 'convertidor-gif-a-png';
7
+ const title = 'Convertir GIF a PNG Online';
8
+ const description =
9
+ 'Extrae el primer fotograma de tus GIF y conviértelo a PNG preservando transparencias. Sin servidor. Procesado local. Gratis.';
10
+
11
+ const ui: ImageConverterUI = {
12
+ dragText: 'Arrastra archivos GIF...',
13
+ convertText: 'Para convertirlos a PNG al instante',
14
+ selectFiles: 'Seleccionar archivos',
15
+ processedFiles: 'Archivos procesados',
16
+ downloadAll: 'Descargar Todo (.zip)',
17
17
  pending: 'Pendiente',
18
- bibliographyTitle: 'Referencias Bibliográficas',
19
- faqTitle: 'Preguntas Frecuentes',
20
- };
21
-
22
- const faq: GifAPngLocaleContent['faq'] = [
23
- {
24
- question: '¿Por qué convertir un formato animado como GIF a un formato estático como PNG?',
25
- answer:
26
- 'Muchas redes sociales o avatares no admiten fotografías que cambian. Extraer el primer cuadro de un GIF complejo hacia un PNG de alta calidad soluciona las barreras y reduce pesos inservibles.',
27
- },
28
- {
29
- question: '¿Se conservan las transparencias del viejo GIF en el PNG resultante?',
30
- answer:
31
- 'Sí, a diferencia del JPG, el formato PNG mantiene el canal alfa. Si el GIF tenía un fondo transparente, el PNG lo conservará con bordes nítidos.',
32
- },
33
- {
34
- question: '¿Mantienes mis imágenes en los servidores un tiempo tras el procesamiento?',
35
- answer:
36
- 'Ningún servidor retiene tu GIF; toda la extracción es local debido al Canvas Web API. Es el procesador de tu PC quien decodifica de forma segura tu archivo sin contacto con red alguna.',
37
- },
38
- ];
39
-
40
- const howTo: GifAPngLocaleContent['howTo'] = [
41
- {
42
- name: 'Acércanos la Animación',
43
- text: 'Pasa los pesados archivos GIF en el recuadro de inserción.',
44
- },
45
- {
46
- name: 'Foto Extraída Perfecta',
47
- text: 'El sistema paralizará al origen exacto del movimiento, sacando la copia impecable en milisegundos.',
48
- },
49
- {
50
- name: 'Guarda tu Estático',
51
- text: 'Almacena masivamente en ZIP todo aquel volumen de avatares GIFs estáticos convertidos a PNG.',
52
- },
53
- ];
54
-
55
- const seo: GifAPngLocaleContent['seo'] = [
56
- {
57
- type: 'title',
58
- text: 'Convertidor de GIF a PNG: Supera los Límites de Color y Transparencia del GIF',
59
- level: 2,
60
- },
61
- {
62
- type: 'paragraph',
63
- html: 'El GIF fue diseñado en una época en que los monitores apenas podían mostrar 256 colores. Décadas después, esa limitación sigue siendo su mayor debilidad. El PNG nació precisamente para reemplazar al GIF en todos los casos de uso donde la calidad y la transparencia importan: logos, iconos, gráficos de interfaz y cualquier imagen con fondo transparente que deba lucir perfecta sobre cualquier color de fondo.',
64
- },
65
- {
66
- type: 'title',
67
- text: 'GIF vs PNG: la revolución de los 16 millones de colores',
68
- level: 3,
69
- },
70
- {
71
- type: 'paragraph',
72
- html: 'La diferencia más crítica entre GIF y PNG no es solo el número de colores. El GIF soporta transparencia binaria: cada píxel es opaco o completamente transparente, sin gradaciones. El PNG, en cambio, soporta canal alfa completo, con 256 niveles de opacidad por píxel. Esto significa que los bordes de un logo en PNG pueden ser perfectamente suavizados, mientras que los del GIF muestran un dentado característico sobre fondos de colores.',
73
- },
74
- {
75
- type: 'paragraph',
76
- html: 'Además de la transparencia superior, el PNG elimina el límite de 256 colores del GIF. Capturas de pantalla, ilustraciones con degradados, logotipos con sombras: todos se ven significativamente mejor en PNG. Y al ser compresión sin pérdida, cada píxel conserva exactamente el valor original, sin los artefactos que introduciría una conversión a JPG.',
77
- },
78
- {
79
- type: 'title',
80
- text: 'Comparativa de Arquitectura: Local vs Nube',
81
- level: 3,
82
- },
83
- {
84
- type: 'comparative',
85
- items: [
86
- {
87
- title: 'Convertidores Cloud',
88
- description: 'Herramientas que procesan tus imágenes en servidores remotos.',
89
- icon: 'mdi:cloud-upload',
90
- pointIcon: 'mdi:close-circle-outline',
91
- points: [
92
- 'Tus logos e iconos viajan por internet',
93
- 'Tiempo de espera por latencia de red',
94
- 'Límites de tamaño y número de archivos',
95
- 'Tus imágenes pueden quedar en cachés de terceros',
96
- ],
97
- },
98
- {
99
- title: 'Nuestra Arquitectura Local',
100
- description: 'Procesamiento directo en tu hardware mediante tecnología Vanilla JS.',
101
- icon: 'mdi:laptop-mac',
102
- highlight: true,
103
- points: [
104
- 'El GIF nunca abandona tu dispositivo',
105
- 'Conversión instantánea sin red',
106
- 'Sin límites de archivos ni de tamaño',
107
- 'Privacidad absoluta: 0 bytes enviados',
108
- ],
109
- },
110
- ],
111
- },
112
- {
113
- type: 'title',
114
- text: 'Cómo funciona la conversión local GIF a PNG',
115
- level: 3,
116
- },
117
- {
118
- type: 'paragraph',
119
- html: 'La conversión utiliza el Canvas API del navegador. El GIF se decodifica en memoria como un elemento Image nativo. Al renderizarlo sobre un canvas HTML5, el motor gráfico del navegador captura el primer fotograma con toda su información de transparencia original intacta.',
120
- },
121
- {
122
- type: 'paragraph',
123
- html: 'A diferencia de la conversión a JPG, con PNG no es necesario añadir un fondo blanco. El canal alfa del GIF original se preserva directamente en el PNG exportado. El método <code>toDataURL(\'image/png\')</code> genera el flujo de bytes PNG en la RAM de tu ordenador, sin ninguna transmisión de red, y el archivo se descarga directamente.',
124
- },
125
- {
126
- type: 'tip',
127
- title: 'Transparencia binaria del GIF vs canal alfa del PNG',
128
- html: 'El GIF solo soporta transparencia binaria (opaco o transparente). Al convertir a PNG, los píxeles semi-transparentes del GIF se mantienen tal como el navegador los interpreta. Si tu GIF tiene bordes dentados, el PNG los conservará - pero podrás editarlos con suavizado de bordes en cualquier editor, algo imposible con el GIF original.',
129
- },
130
- {
131
- type: 'title',
132
- text: 'Casos de uso y compatibilidad del PNG resultante',
133
- level: 3,
134
- },
135
- {
136
- type: 'list',
137
- icon: 'mdi:check-circle',
138
- items: [
139
- 'Logos e iconos para uso sobre cualquier color de fondo.',
140
- 'Avatares para Discord, Telegram, Slack y plataformas de gaming.',
141
- 'Gráficos de interfaz para aplicaciones web y móviles.',
142
- 'Stickers y emojis personalizados con fondo transparente.',
143
- 'Capturas de pantalla y elementos UI para documentación técnica.',
144
- ],
145
- },
146
- {
147
- type: 'title',
148
- text: 'Conclusión: PNG es lo que el GIF siempre quiso ser',
149
- level: 3,
150
- },
151
- {
152
- type: 'paragraph',
153
- html: 'Convertir de GIF a PNG no es solo cambiar de formato: es actualizar una imagen al estándar moderno que el GIF nunca pudo alcanzar. Más colores, mejor transparencia, menos peso. Nuestra herramienta realiza esta conversión en milisegundos, directamente en tu navegador, sin enviar ningún dato al exterior.',
154
- },
155
- ];
156
-
18
+ bibliographyTitle: 'Referencias Bibliográficas',
19
+ faqTitle: 'Preguntas Frecuentes',
20
+ };
21
+
22
+ const faq: GifAPngLocaleContent['faq'] = [
23
+ {
24
+ question: '¿Por qué convertir un formato animado como GIF a un formato estático como PNG?',
25
+ answer:
26
+ 'Muchas redes sociales o avatares no admiten fotografías que cambian. Extraer el primer cuadro de un GIF complejo hacia un PNG de alta calidad soluciona las barreras y reduce pesos inservibles.',
27
+ },
28
+ {
29
+ question: '¿Se conservan las transparencias del viejo GIF en el PNG resultante?',
30
+ answer:
31
+ 'Sí, a diferencia del JPG, el formato PNG mantiene el canal alfa. Si el GIF tenía un fondo transparente, el PNG lo conservará con bordes nítidos.',
32
+ },
33
+ {
34
+ question: '¿Mantienes mis imágenes en los servidores un tiempo tras el procesamiento?',
35
+ answer:
36
+ 'Ningún servidor retiene tu GIF; toda la extracción es local debido al Canvas Web API. Es el procesador de tu PC quien decodifica de forma segura tu archivo sin contacto con red alguna.',
37
+ },
38
+ ];
39
+
40
+ const howTo: GifAPngLocaleContent['howTo'] = [
41
+ {
42
+ name: 'Acércanos la Animación',
43
+ text: 'Pasa los pesados archivos GIF en el recuadro de inserción.',
44
+ },
45
+ {
46
+ name: 'Foto Extraída Perfecta',
47
+ text: 'El sistema paralizará al origen exacto del movimiento, sacando la copia impecable en milisegundos.',
48
+ },
49
+ {
50
+ name: 'Guarda tu Estático',
51
+ text: 'Almacena masivamente en ZIP todo aquel volumen de avatares GIFs estáticos convertidos a PNG.',
52
+ },
53
+ ];
54
+
55
+ const seo: GifAPngLocaleContent['seo'] = [
56
+ {
57
+ type: 'title',
58
+ text: 'Convertidor de GIF a PNG: Supera los Límites de Color y Transparencia del GIF',
59
+ level: 2,
60
+ },
61
+ {
62
+ type: 'paragraph',
63
+ html: 'El GIF fue diseñado en una época en que los monitores apenas podían mostrar 256 colores. Décadas después, esa limitación sigue siendo su mayor debilidad. El PNG nació precisamente para reemplazar al GIF en todos los casos de uso donde la calidad y la transparencia importan: logos, iconos, gráficos de interfaz y cualquier imagen con fondo transparente que deba lucir perfecta sobre cualquier color de fondo.',
64
+ },
65
+ {
66
+ type: 'title',
67
+ text: 'GIF vs PNG: la revolución de los 16 millones de colores',
68
+ level: 3,
69
+ },
70
+ {
71
+ type: 'paragraph',
72
+ html: 'La diferencia más crítica entre GIF y PNG no es solo el número de colores. El GIF soporta transparencia binaria: cada píxel es opaco o completamente transparente, sin gradaciones. El PNG, en cambio, soporta canal alfa completo, con 256 niveles de opacidad por píxel. Esto significa que los bordes de un logo en PNG pueden ser perfectamente suavizados, mientras que los del GIF muestran un dentado característico sobre fondos de colores.',
73
+ },
74
+ {
75
+ type: 'paragraph',
76
+ html: 'Además de la transparencia superior, el PNG elimina el límite de 256 colores del GIF. Capturas de pantalla, ilustraciones con degradados, logotipos con sombras: todos se ven significativamente mejor en PNG. Y al ser compresión sin pérdida, cada píxel conserva exactamente el valor original, sin los artefactos que introduciría una conversión a JPG.',
77
+ },
78
+ {
79
+ type: 'title',
80
+ text: 'Comparativa de Arquitectura: Local vs Nube',
81
+ level: 3,
82
+ },
83
+ {
84
+ type: 'comparative',
85
+ items: [
86
+ {
87
+ title: 'Convertidores Cloud',
88
+ description: 'Herramientas que procesan tus imágenes en servidores remotos.',
89
+ icon: 'mdi:cloud-upload',
90
+ pointIcon: 'mdi:close-circle-outline',
91
+ points: [
92
+ 'Tus logos e iconos viajan por internet',
93
+ 'Tiempo de espera por latencia de red',
94
+ 'Límites de tamaño y número de archivos',
95
+ 'Tus imágenes pueden quedar en cachés de terceros',
96
+ ],
97
+ },
98
+ {
99
+ title: 'Nuestra Arquitectura Local',
100
+ description: 'Procesamiento directo en tu hardware mediante tecnología Vanilla JS.',
101
+ icon: 'mdi:laptop-mac',
102
+ highlight: true,
103
+ points: [
104
+ 'El GIF nunca abandona tu dispositivo',
105
+ 'Conversión instantánea sin red',
106
+ 'Sin límites de archivos ni de tamaño',
107
+ 'Privacidad absoluta: 0 bytes enviados',
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ {
113
+ type: 'title',
114
+ text: 'Cómo funciona la conversión local GIF a PNG',
115
+ level: 3,
116
+ },
117
+ {
118
+ type: 'paragraph',
119
+ html: 'La conversión utiliza el Canvas API del navegador. El GIF se decodifica en memoria como un elemento Image nativo. Al renderizarlo sobre un canvas HTML5, el motor gráfico del navegador captura el primer fotograma con toda su información de transparencia original intacta.',
120
+ },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'A diferencia de la conversión a JPG, con PNG no es necesario añadir un fondo blanco. El canal alfa del GIF original se preserva directamente en el PNG exportado. El método <code>toDataURL(\'image/png\')</code> genera el flujo de bytes PNG en la RAM de tu ordenador, sin ninguna transmisión de red, y el archivo se descarga directamente.',
124
+ },
125
+ {
126
+ type: 'tip',
127
+ title: 'Transparencia binaria del GIF vs canal alfa del PNG',
128
+ html: 'El GIF solo soporta transparencia binaria (opaco o transparente). Al convertir a PNG, los píxeles semi-transparentes del GIF se mantienen tal como el navegador los interpreta. Si tu GIF tiene bordes dentados, el PNG los conservará - pero podrás editarlos con suavizado de bordes en cualquier editor, algo imposible con el GIF original.',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Casos de uso y compatibilidad del PNG resultante',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'list',
137
+ icon: 'mdi:check-circle',
138
+ items: [
139
+ 'Logos e iconos para uso sobre cualquier color de fondo.',
140
+ 'Avatares para Discord, Telegram, Slack y plataformas de gaming.',
141
+ 'Gráficos de interfaz para aplicaciones web y móviles.',
142
+ 'Stickers y emojis personalizados con fondo transparente.',
143
+ 'Capturas de pantalla y elementos UI para documentación técnica.',
144
+ ],
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'Conclusión: PNG es lo que el GIF siempre quiso ser',
149
+ level: 3,
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: 'Convertir de GIF a PNG no es solo cambiar de formato: es actualizar una imagen al estándar moderno que el GIF nunca pudo alcanzar. Más colores, mejor transparencia, menos peso. Nuestra herramienta realiza esta conversión en milisegundos, directamente en tu navegador, sin enviar ningún dato al exterior.',
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: 'es', 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: 'es', faq, howTo }),
168
+ };