@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 { JpgAPngLocaleContent } from '../index';
5
-
6
- const slug = 'convertidor-jpg-a-png';
7
- const title = 'Convertir JPG a PNG Online y Gratis';
8
- const description =
9
- 'Convierte imágenes JPG a PNG en tu navegador sin subir archivos. Conversión lossless, gratuita y totalmente privada.';
10
-
11
- const ui: ImageConverterUI = {
12
- dragText: 'Arrastra archivos JPG...',
13
- convertText: 'Para convertirlos a PNG al instante',
14
- selectFiles: 'Seleccionar archivos',
15
- processedFiles: 'Archivos procesados',
16
- downloadAll: 'Descargar Todo (.zip)',
4
+ import type { JpgAPngLocaleContent } from '../index';
5
+
6
+ const slug = 'convertidor-jpg-a-png';
7
+ const title = 'Convertir JPG a PNG Online y Gratis';
8
+ const description =
9
+ 'Convierte imágenes JPG a PNG en tu navegador sin subir archivos. Conversión lossless, gratuita y totalmente privada.';
10
+
11
+ const ui: ImageConverterUI = {
12
+ dragText: 'Arrastra archivos JPG...',
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: JpgAPngLocaleContent['faq'] = [
23
- {
24
- question: '¿Cuándo debería usar JPG a PNG?',
25
- answer:
26
- 'Siempre que vayas a editar texto o logos dentro de una fotografía. Si guardas un JPG varias veces, este se ensucia. El PNG congela la compresión.',
27
- },
28
- {
29
- question: '¿El archivo PNG tendrá el fondo transparente de inmediato?',
30
- answer:
31
- 'No. El JPG original venía plano y sin ese tipo de canal estructural. El PNG resultante preparará ese contenedor, luego deberás aislar la pieza usando Photoshop u otro editor.',
32
- },
33
- {
34
- question: '¿Tiene esta web límites de tráfico?',
35
- answer:
36
- 'Gracias a tecnologías Edge sin dependencias cloud, el peso de tu conversión no supone límites porque usa íntegramente tu terminal informático o móvil.',
37
- },
38
- ];
39
-
40
- const howTo: JpgAPngLocaleContent['howTo'] = [
41
- {
42
- name: 'Arrastra JPG al panel',
43
- text: 'Sube imágenes estáticas en formato JPG usando ratón táctil o selector del ordenador.',
44
- },
45
- {
46
- name: 'Ejecución Lossless',
47
- text: 'El software de Vanilla empuja los bits del cuadro hacia un envoltorio sin perdidas nativo de la familia PNG.',
48
- },
49
- {
50
- name: 'Terminar Sesión',
51
- text: 'Pulsa el panel y tu navegador depositará los activos web descargados en tus Carpetas de Usuario.',
52
- },
53
- ];
54
-
55
- const seo: JpgAPngLocaleContent['seo'] = [
56
- {
57
- type: 'title',
58
- text: 'Convertidor de JPG a PNG: Edición sin Pérdidas y Transparencia',
59
- level: 2,
60
- },
61
- {
62
- type: 'paragraph',
63
- html: 'El <strong>JPG</strong> es insuperable para fotografías de cámara, pero tiene un talón de Aquiles: cada vez que guardas el archivo aplica de nuevo su compresión con pérdida, degradando progresivamente los bordes y los degradados. El <strong>PNG</strong> usa compresión sin pérdida - una vez guardado, los píxeles son inmutables. Convertir un JPG a PNG es la operación clave cuando necesitas preparar una imagen para edición intensiva, añadir un fondo transparente o integrarla en un flujo de diseño que requiere múltiples guardados.',
64
- },
65
- {
66
- type: 'title',
67
- text: '¿JPG o PNG? Cuándo usar cada formato',
68
- level: 3,
69
- },
70
- {
71
- type: 'paragraph',
72
- html: 'El <strong>JPG</strong> es el rey de la fotografía: pesos reducidos, compatible con todo. Pero sus artefactos de compresión se acumulan con cada edición y re-guardado. Si necesitas recortar, retocar o añadir texto a una imagen repetidamente, empezar desde JPG significa introducir degradación en cada ciclo. Además, el JPG carece de canal alfa: no puede tener fondos transparentes, lo que lo descalifica para logotipos, iconos y elementos de UI.',
73
- },
74
- {
75
- type: 'paragraph',
76
- html: 'El <strong>PNG</strong> es la elección correcta para logos corporativos, capturas de pantalla con texto nítido, elementos de interfaz, imágenes de producto con fondo blanco que luego necesitarás recortar, o cualquier recurso gráfico que vaya a ser editado más de una vez. La compresión sin pérdida garantiza que los bordes del texto se mantienen perfectamente definidos y que los colores planos permanecen puros, sin ruido JPEG.',
77
- },
78
- {
79
- type: 'title',
80
- text: 'Comparativa: Conversión Local vs Nube',
81
- level: 3,
82
- },
83
- {
84
- type: 'comparative',
85
- items: [
86
- {
87
- title: 'Convertidores Cloud',
88
- description: 'Herramientas que suben tus archivos a un servidor remoto.',
89
- icon: 'mdi:cloud-upload',
90
- pointIcon: 'mdi:close-circle-outline',
91
- points: [
92
- 'Latencia de red en upload y download',
93
- 'Tus imágenes quedan en servidores ajenos',
94
- 'Límites de tamaño y conversiones diarias',
95
- 'Publicidad intrusiva y rastreadores 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
- 'Velocidad instantánea - cero latencia de red',
105
- 'Privacidad total - 0 bytes enviados al exterior',
106
- 'Sin límites de MB ni de número de archivos',
107
- 'Interfaz limpia, sin anuncios ni rastreos',
108
- ],
109
- },
110
- ],
111
- },
112
- {
113
- type: 'title',
114
- text: 'Cómo funciona técnicamente',
115
- level: 3,
116
- },
117
- {
118
- type: 'paragraph',
119
- html: 'El proceso es puramente local: el navegador crea un <strong>Blob</strong> con el JPG seleccionado y lo dibuja sobre un <strong>Canvas HTML5</strong> en memoria. Una vez renderizado, se llama a <code>toDataURL(\'image/png\')</code> - el codec PNG integrado en el navegador recodifica cada píxel sin aplicar ninguna nueva compresión con pérdida. El resultado es un PNG que preserva fielmente el estado actual del JPG: ni mejor ni peor, simplemente congelado.',
120
- },
121
- {
122
- type: 'paragraph',
123
- html: 'El PNG resultante utilizará compresión DEFLATE sin pérdida, la misma que emplean herramientas profesionales como Photoshop o GIMP. Su tamaño será mayor que el JPG original - normalmente entre 2 y 5 veces - porque almacena todos los píxeles sin descartar información. Es el precio que se paga por la fidelidad y la editabilidad infinita.',
124
- },
125
- {
126
- type: 'tip',
127
- title: 'Importante: el PNG no recupera la calidad JPEG',
128
- html: 'Convertir un JPG a PNG <strong>no recupera la calidad perdida</strong> durante la compresión JPEG original. Si tu JPG ya tenía artefactos de bloque o ruido de color, el PNG los conservará intactos - simplemente evita que se añadan más. Piensa en la conversión como "congelar" el estado actual de la imagen para que ediciones futuras no la degraden más.',
129
- },
130
- {
131
- type: 'title',
132
- text: 'Casos de uso y compatibilidad',
133
- level: 3,
134
- },
135
- {
136
- type: 'list',
137
- icon: 'mdi:check-circle',
138
- items: [
139
- 'Logos y elementos de marca que necesitan fondo transparente tras el recorte.',
140
- 'Capturas de pantalla con texto que serán editadas y re-guardadas varias veces.',
141
- 'Imágenes de producto para e-commerce que requieren fondo blanco limpio y recortable.',
142
- 'Recursos gráficos para presentaciones de PowerPoint o Google Slides.',
143
- 'Activos de UI para aplicaciones web y móviles donde la nitidez de bordes es crítica.',
144
- ],
145
- },
146
- {
147
- type: 'title',
148
- text: 'Conclusión',
149
- level: 3,
150
- },
151
- {
152
- type: 'paragraph',
153
- html: 'La conversión de JPG a PNG es el primer paso en cualquier flujo de trabajo de diseño serio. No transforma la calidad original, pero sí protege cada píxel de ediciones futuras. Con esta herramienta, el proceso ocurre al instante y de forma completamente privada, sin que tus imágenes corporativas o personales salgan en ningún momento de tu dispositivo.',
154
- },
155
- ];
156
-
18
+ bibliographyTitle: 'Referencias Bibliográficas',
19
+ faqTitle: 'Preguntas Frecuentes',
20
+ };
21
+
22
+ const faq: JpgAPngLocaleContent['faq'] = [
23
+ {
24
+ question: '¿Cuándo debería usar JPG a PNG?',
25
+ answer:
26
+ 'Siempre que vayas a editar texto o logos dentro de una fotografía. Si guardas un JPG varias veces, este se ensucia. El PNG congela la compresión.',
27
+ },
28
+ {
29
+ question: '¿El archivo PNG tendrá el fondo transparente de inmediato?',
30
+ answer:
31
+ 'No. El JPG original venía plano y sin ese tipo de canal estructural. El PNG resultante preparará ese contenedor, luego deberás aislar la pieza usando Photoshop u otro editor.',
32
+ },
33
+ {
34
+ question: '¿Tiene esta web límites de tráfico?',
35
+ answer:
36
+ 'Gracias a tecnologías Edge sin dependencias cloud, el peso de tu conversión no supone límites porque usa íntegramente tu terminal informático o móvil.',
37
+ },
38
+ ];
39
+
40
+ const howTo: JpgAPngLocaleContent['howTo'] = [
41
+ {
42
+ name: 'Arrastra JPG al panel',
43
+ text: 'Sube imágenes estáticas en formato JPG usando ratón táctil o selector del ordenador.',
44
+ },
45
+ {
46
+ name: 'Ejecución Lossless',
47
+ text: 'El software de Vanilla empuja los bits del cuadro hacia un envoltorio sin perdidas nativo de la familia PNG.',
48
+ },
49
+ {
50
+ name: 'Terminar Sesión',
51
+ text: 'Pulsa el panel y tu navegador depositará los activos web descargados en tus Carpetas de Usuario.',
52
+ },
53
+ ];
54
+
55
+ const seo: JpgAPngLocaleContent['seo'] = [
56
+ {
57
+ type: 'title',
58
+ text: 'Convertidor de JPG a PNG: Edición sin Pérdidas y Transparencia',
59
+ level: 2,
60
+ },
61
+ {
62
+ type: 'paragraph',
63
+ html: 'El <strong>JPG</strong> es insuperable para fotografías de cámara, pero tiene un talón de Aquiles: cada vez que guardas el archivo aplica de nuevo su compresión con pérdida, degradando progresivamente los bordes y los degradados. El <strong>PNG</strong> usa compresión sin pérdida - una vez guardado, los píxeles son inmutables. Convertir un JPG a PNG es la operación clave cuando necesitas preparar una imagen para edición intensiva, añadir un fondo transparente o integrarla en un flujo de diseño que requiere múltiples guardados.',
64
+ },
65
+ {
66
+ type: 'title',
67
+ text: '¿JPG o PNG? Cuándo usar cada formato',
68
+ level: 3,
69
+ },
70
+ {
71
+ type: 'paragraph',
72
+ html: 'El <strong>JPG</strong> es el rey de la fotografía: pesos reducidos, compatible con todo. Pero sus artefactos de compresión se acumulan con cada edición y re-guardado. Si necesitas recortar, retocar o añadir texto a una imagen repetidamente, empezar desde JPG significa introducir degradación en cada ciclo. Además, el JPG carece de canal alfa: no puede tener fondos transparentes, lo que lo descalifica para logotipos, iconos y elementos de UI.',
73
+ },
74
+ {
75
+ type: 'paragraph',
76
+ html: 'El <strong>PNG</strong> es la elección correcta para logos corporativos, capturas de pantalla con texto nítido, elementos de interfaz, imágenes de producto con fondo blanco que luego necesitarás recortar, o cualquier recurso gráfico que vaya a ser editado más de una vez. La compresión sin pérdida garantiza que los bordes del texto se mantienen perfectamente definidos y que los colores planos permanecen puros, sin ruido JPEG.',
77
+ },
78
+ {
79
+ type: 'title',
80
+ text: 'Comparativa: Conversión Local vs Nube',
81
+ level: 3,
82
+ },
83
+ {
84
+ type: 'comparative',
85
+ items: [
86
+ {
87
+ title: 'Convertidores Cloud',
88
+ description: 'Herramientas que suben tus archivos a un servidor remoto.',
89
+ icon: 'mdi:cloud-upload',
90
+ pointIcon: 'mdi:close-circle-outline',
91
+ points: [
92
+ 'Latencia de red en upload y download',
93
+ 'Tus imágenes quedan en servidores ajenos',
94
+ 'Límites de tamaño y conversiones diarias',
95
+ 'Publicidad intrusiva y rastreadores 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
+ 'Velocidad instantánea - cero latencia de red',
105
+ 'Privacidad total - 0 bytes enviados al exterior',
106
+ 'Sin límites de MB ni de número de archivos',
107
+ 'Interfaz limpia, sin anuncios ni rastreos',
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ {
113
+ type: 'title',
114
+ text: 'Cómo funciona técnicamente',
115
+ level: 3,
116
+ },
117
+ {
118
+ type: 'paragraph',
119
+ html: 'El proceso es puramente local: el navegador crea un <strong>Blob</strong> con el JPG seleccionado y lo dibuja sobre un <strong>Canvas HTML5</strong> en memoria. Una vez renderizado, se llama a <code>toDataURL(\'image/png\')</code> - el codec PNG integrado en el navegador recodifica cada píxel sin aplicar ninguna nueva compresión con pérdida. El resultado es un PNG que preserva fielmente el estado actual del JPG: ni mejor ni peor, simplemente congelado.',
120
+ },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'El PNG resultante utilizará compresión DEFLATE sin pérdida, la misma que emplean herramientas profesionales como Photoshop o GIMP. Su tamaño será mayor que el JPG original - normalmente entre 2 y 5 veces - porque almacena todos los píxeles sin descartar información. Es el precio que se paga por la fidelidad y la editabilidad infinita.',
124
+ },
125
+ {
126
+ type: 'tip',
127
+ title: 'Importante: el PNG no recupera la calidad JPEG',
128
+ html: 'Convertir un JPG a PNG <strong>no recupera la calidad perdida</strong> durante la compresión JPEG original. Si tu JPG ya tenía artefactos de bloque o ruido de color, el PNG los conservará intactos - simplemente evita que se añadan más. Piensa en la conversión como "congelar" el estado actual de la imagen para que ediciones futuras no la degraden más.',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Casos de uso y compatibilidad',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'list',
137
+ icon: 'mdi:check-circle',
138
+ items: [
139
+ 'Logos y elementos de marca que necesitan fondo transparente tras el recorte.',
140
+ 'Capturas de pantalla con texto que serán editadas y re-guardadas varias veces.',
141
+ 'Imágenes de producto para e-commerce que requieren fondo blanco limpio y recortable.',
142
+ 'Recursos gráficos para presentaciones de PowerPoint o Google Slides.',
143
+ 'Activos de UI para aplicaciones web y móviles donde la nitidez de bordes es crítica.',
144
+ ],
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'Conclusión',
149
+ level: 3,
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: 'La conversión de JPG a PNG es el primer paso en cualquier flujo de trabajo de diseño serio. No transforma la calidad original, pero sí protege cada píxel de ediciones futuras. Con esta herramienta, el proceso ocurre al instante y de forma completamente privada, sin que tus imágenes corporativas o personales salgan en ningún momento de tu dispositivo.',
154
+ },
155
+ ];
157
156
 
158
- export const content: JpgAPngLocaleContent = {
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: JpgAPngLocaleContent = {
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
+ };