@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 { 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
+ };