@jjlmoya/utils-converters 1.7.0 → 1.9.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.
- package/package.json +60 -59
- package/src/shared/logic/schemas.ts +57 -0
- package/src/tests/faq_count.test.ts +13 -4
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +42 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/seo_length.test.ts +1 -1
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tool/avifAJpg/i18n/de.ts +178 -0
- package/src/tool/avifAJpg/i18n/en.ts +2 -12
- package/src/tool/avifAJpg/i18n/es.ts +2 -12
- package/src/tool/avifAJpg/i18n/fr.ts +2 -12
- package/src/tool/avifAJpg/i18n/id.ts +178 -0
- package/src/tool/avifAJpg/i18n/it.ts +178 -0
- package/src/tool/avifAJpg/i18n/ja.ts +178 -0
- package/src/tool/avifAJpg/i18n/ko.ts +178 -0
- package/src/tool/avifAJpg/i18n/nl.ts +178 -0
- package/src/tool/avifAJpg/i18n/pl.ts +178 -0
- package/src/tool/avifAJpg/i18n/pt.ts +178 -0
- package/src/tool/avifAJpg/i18n/ru.ts +178 -0
- package/src/tool/avifAJpg/i18n/sv.ts +178 -0
- package/src/tool/avifAJpg/i18n/tr.ts +178 -0
- package/src/tool/avifAJpg/i18n/zh.ts +178 -0
- package/src/tool/avifAJpg/index.ts +13 -1
- package/src/tool/avifAPng/i18n/de.ts +178 -0
- package/src/tool/avifAPng/i18n/en.ts +2 -12
- package/src/tool/avifAPng/i18n/es.ts +2 -12
- package/src/tool/avifAPng/i18n/fr.ts +2 -12
- package/src/tool/avifAPng/i18n/id.ts +178 -0
- package/src/tool/avifAPng/i18n/it.ts +178 -0
- package/src/tool/avifAPng/i18n/ja.ts +178 -0
- package/src/tool/avifAPng/i18n/ko.ts +178 -0
- package/src/tool/avifAPng/i18n/nl.ts +178 -0
- package/src/tool/avifAPng/i18n/pl.ts +178 -0
- package/src/tool/avifAPng/i18n/pt.ts +178 -0
- package/src/tool/avifAPng/i18n/ru.ts +178 -0
- package/src/tool/avifAPng/i18n/sv.ts +178 -0
- package/src/tool/avifAPng/i18n/tr.ts +178 -0
- package/src/tool/avifAPng/i18n/zh.ts +178 -0
- package/src/tool/avifAPng/index.ts +13 -1
- package/src/tool/avifAWebp/i18n/de.ts +178 -0
- package/src/tool/avifAWebp/i18n/en.ts +2 -12
- package/src/tool/avifAWebp/i18n/es.ts +2 -12
- package/src/tool/avifAWebp/i18n/fr.ts +2 -12
- package/src/tool/avifAWebp/i18n/id.ts +178 -0
- package/src/tool/avifAWebp/i18n/it.ts +178 -0
- package/src/tool/avifAWebp/i18n/ja.ts +178 -0
- package/src/tool/avifAWebp/i18n/ko.ts +178 -0
- package/src/tool/avifAWebp/i18n/nl.ts +178 -0
- package/src/tool/avifAWebp/i18n/pl.ts +178 -0
- package/src/tool/avifAWebp/i18n/pt.ts +178 -0
- package/src/tool/avifAWebp/i18n/ru.ts +178 -0
- package/src/tool/avifAWebp/i18n/sv.ts +178 -0
- package/src/tool/avifAWebp/i18n/tr.ts +178 -0
- package/src/tool/avifAWebp/i18n/zh.ts +178 -0
- package/src/tool/avifAWebp/index.ts +13 -1
- package/src/tool/bmpAJpg/i18n/de.ts +178 -0
- package/src/tool/bmpAJpg/i18n/en.ts +2 -12
- package/src/tool/bmpAJpg/i18n/es.ts +2 -12
- package/src/tool/bmpAJpg/i18n/fr.ts +2 -12
- package/src/tool/bmpAJpg/i18n/id.ts +178 -0
- package/src/tool/bmpAJpg/i18n/it.ts +178 -0
- package/src/tool/bmpAJpg/i18n/ja.ts +178 -0
- package/src/tool/bmpAJpg/i18n/ko.ts +178 -0
- package/src/tool/bmpAJpg/i18n/nl.ts +178 -0
- package/src/tool/bmpAJpg/i18n/pl.ts +178 -0
- package/src/tool/bmpAJpg/i18n/pt.ts +178 -0
- package/src/tool/bmpAJpg/i18n/ru.ts +178 -0
- package/src/tool/bmpAJpg/i18n/sv.ts +178 -0
- package/src/tool/bmpAJpg/i18n/tr.ts +178 -0
- package/src/tool/bmpAJpg/i18n/zh.ts +178 -0
- package/src/tool/bmpAJpg/index.ts +13 -1
- package/src/tool/bmpAPng/i18n/de.ts +177 -0
- package/src/tool/bmpAPng/i18n/en.ts +2 -12
- package/src/tool/bmpAPng/i18n/es.ts +2 -12
- package/src/tool/bmpAPng/i18n/fr.ts +2 -12
- package/src/tool/bmpAPng/i18n/id.ts +177 -0
- package/src/tool/bmpAPng/i18n/it.ts +177 -0
- package/src/tool/bmpAPng/i18n/ja.ts +177 -0
- package/src/tool/bmpAPng/i18n/ko.ts +177 -0
- package/src/tool/bmpAPng/i18n/nl.ts +177 -0
- package/src/tool/bmpAPng/i18n/pl.ts +177 -0
- package/src/tool/bmpAPng/i18n/pt.ts +177 -0
- package/src/tool/bmpAPng/i18n/ru.ts +177 -0
- package/src/tool/bmpAPng/i18n/sv.ts +177 -0
- package/src/tool/bmpAPng/i18n/tr.ts +177 -0
- package/src/tool/bmpAPng/i18n/zh.ts +177 -0
- package/src/tool/bmpAPng/index.ts +13 -1
- package/src/tool/bmpAWebp/i18n/de.ts +178 -0
- package/src/tool/bmpAWebp/i18n/en.ts +2 -12
- package/src/tool/bmpAWebp/i18n/es.ts +2 -12
- package/src/tool/bmpAWebp/i18n/fr.ts +2 -12
- package/src/tool/bmpAWebp/i18n/id.ts +178 -0
- package/src/tool/bmpAWebp/i18n/it.ts +178 -0
- package/src/tool/bmpAWebp/i18n/ja.ts +178 -0
- package/src/tool/bmpAWebp/i18n/ko.ts +178 -0
- package/src/tool/bmpAWebp/i18n/nl.ts +178 -0
- package/src/tool/bmpAWebp/i18n/pl.ts +178 -0
- package/src/tool/bmpAWebp/i18n/pt.ts +178 -0
- package/src/tool/bmpAWebp/i18n/ru.ts +178 -0
- package/src/tool/bmpAWebp/i18n/sv.ts +178 -0
- package/src/tool/bmpAWebp/i18n/tr.ts +178 -0
- package/src/tool/bmpAWebp/i18n/zh.ts +178 -0
- package/src/tool/bmpAWebp/index.ts +13 -1
- package/src/tool/gifAJpg/i18n/de.ts +178 -0
- package/src/tool/gifAJpg/i18n/en.ts +2 -12
- package/src/tool/gifAJpg/i18n/es.ts +2 -12
- package/src/tool/gifAJpg/i18n/fr.ts +2 -12
- package/src/tool/gifAJpg/i18n/id.ts +178 -0
- package/src/tool/gifAJpg/i18n/it.ts +178 -0
- package/src/tool/gifAJpg/i18n/ja.ts +178 -0
- package/src/tool/gifAJpg/i18n/ko.ts +178 -0
- package/src/tool/gifAJpg/i18n/nl.ts +178 -0
- package/src/tool/gifAJpg/i18n/pl.ts +178 -0
- package/src/tool/gifAJpg/i18n/pt.ts +178 -0
- package/src/tool/gifAJpg/i18n/ru.ts +178 -0
- package/src/tool/gifAJpg/i18n/sv.ts +178 -0
- package/src/tool/gifAJpg/i18n/tr.ts +178 -0
- package/src/tool/gifAJpg/i18n/zh.ts +178 -0
- package/src/tool/gifAJpg/index.ts +13 -1
- package/src/tool/gifAPng/i18n/de.ts +178 -0
- package/src/tool/gifAPng/i18n/en.ts +2 -12
- package/src/tool/gifAPng/i18n/es.ts +2 -12
- package/src/tool/gifAPng/i18n/fr.ts +2 -12
- package/src/tool/gifAPng/i18n/id.ts +178 -0
- package/src/tool/gifAPng/i18n/it.ts +178 -0
- package/src/tool/gifAPng/i18n/ja.ts +178 -0
- package/src/tool/gifAPng/i18n/ko.ts +178 -0
- package/src/tool/gifAPng/i18n/nl.ts +178 -0
- package/src/tool/gifAPng/i18n/pl.ts +178 -0
- package/src/tool/gifAPng/i18n/pt.ts +178 -0
- package/src/tool/gifAPng/i18n/ru.ts +178 -0
- package/src/tool/gifAPng/i18n/sv.ts +178 -0
- package/src/tool/gifAPng/i18n/tr.ts +178 -0
- package/src/tool/gifAPng/i18n/zh.ts +178 -0
- package/src/tool/gifAPng/index.ts +12 -0
- package/src/tool/gifAWebp/i18n/de.ts +178 -0
- package/src/tool/gifAWebp/i18n/en.ts +2 -12
- package/src/tool/gifAWebp/i18n/es.ts +2 -12
- package/src/tool/gifAWebp/i18n/fr.ts +2 -12
- package/src/tool/gifAWebp/i18n/id.ts +178 -0
- package/src/tool/gifAWebp/i18n/it.ts +178 -0
- package/src/tool/gifAWebp/i18n/ja.ts +178 -0
- package/src/tool/gifAWebp/i18n/ko.ts +178 -0
- package/src/tool/gifAWebp/i18n/nl.ts +178 -0
- package/src/tool/gifAWebp/i18n/pl.ts +178 -0
- package/src/tool/gifAWebp/i18n/pt.ts +178 -0
- package/src/tool/gifAWebp/i18n/ru.ts +178 -0
- package/src/tool/gifAWebp/i18n/sv.ts +178 -0
- package/src/tool/gifAWebp/i18n/tr.ts +178 -0
- package/src/tool/gifAWebp/i18n/zh.ts +178 -0
- package/src/tool/gifAWebp/index.ts +12 -0
- package/src/tool/imagenBase64/i18n/de.ts +168 -0
- package/src/tool/imagenBase64/i18n/en.ts +2 -12
- package/src/tool/imagenBase64/i18n/es.ts +2 -12
- package/src/tool/imagenBase64/i18n/fr.ts +2 -12
- package/src/tool/imagenBase64/i18n/id.ts +168 -0
- package/src/tool/imagenBase64/i18n/it.ts +168 -0
- package/src/tool/imagenBase64/i18n/ja.ts +168 -0
- package/src/tool/imagenBase64/i18n/ko.ts +168 -0
- package/src/tool/imagenBase64/i18n/nl.ts +168 -0
- package/src/tool/imagenBase64/i18n/pl.ts +168 -0
- package/src/tool/imagenBase64/i18n/pt.ts +173 -0
- package/src/tool/imagenBase64/i18n/ru.ts +168 -0
- package/src/tool/imagenBase64/i18n/sv.ts +168 -0
- package/src/tool/imagenBase64/i18n/tr.ts +168 -0
- package/src/tool/imagenBase64/i18n/zh.ts +168 -0
- package/src/tool/imagenBase64/index.ts +12 -0
- package/src/tool/jpgAIco/i18n/de.ts +183 -0
- package/src/tool/jpgAIco/i18n/en.ts +8 -13
- package/src/tool/jpgAIco/i18n/es.ts +13 -18
- package/src/tool/jpgAIco/i18n/fr.ts +9 -14
- package/src/tool/jpgAIco/i18n/id.ts +183 -0
- package/src/tool/jpgAIco/i18n/it.ts +183 -0
- package/src/tool/jpgAIco/i18n/ja.ts +183 -0
- package/src/tool/jpgAIco/i18n/ko.ts +183 -0
- package/src/tool/jpgAIco/i18n/nl.ts +183 -0
- package/src/tool/jpgAIco/i18n/pl.ts +183 -0
- package/src/tool/jpgAIco/i18n/pt.ts +183 -0
- package/src/tool/jpgAIco/i18n/ru.ts +183 -0
- package/src/tool/jpgAIco/i18n/sv.ts +183 -0
- package/src/tool/jpgAIco/i18n/tr.ts +183 -0
- package/src/tool/jpgAIco/i18n/zh.ts +183 -0
- package/src/tool/jpgAIco/index.ts +12 -0
- package/src/tool/jpgAPng/i18n/de.ts +178 -0
- package/src/tool/jpgAPng/i18n/en.ts +2 -12
- package/src/tool/jpgAPng/i18n/es.ts +2 -12
- package/src/tool/jpgAPng/i18n/fr.ts +2 -12
- package/src/tool/jpgAPng/i18n/id.ts +178 -0
- package/src/tool/jpgAPng/i18n/it.ts +178 -0
- package/src/tool/jpgAPng/i18n/ja.ts +178 -0
- package/src/tool/jpgAPng/i18n/ko.ts +178 -0
- package/src/tool/jpgAPng/i18n/nl.ts +178 -0
- package/src/tool/jpgAPng/i18n/pl.ts +178 -0
- package/src/tool/jpgAPng/i18n/pt.ts +178 -0
- package/src/tool/jpgAPng/i18n/ru.ts +178 -0
- package/src/tool/jpgAPng/i18n/sv.ts +178 -0
- package/src/tool/jpgAPng/i18n/tr.ts +178 -0
- package/src/tool/jpgAPng/i18n/zh.ts +178 -0
- package/src/tool/jpgAPng/index.ts +13 -1
- package/src/tool/jpgAWebp/i18n/de.ts +178 -0
- package/src/tool/jpgAWebp/i18n/en.ts +2 -12
- package/src/tool/jpgAWebp/i18n/es.ts +2 -12
- package/src/tool/jpgAWebp/i18n/fr.ts +2 -12
- package/src/tool/jpgAWebp/i18n/id.ts +178 -0
- package/src/tool/jpgAWebp/i18n/it.ts +178 -0
- package/src/tool/jpgAWebp/i18n/ja.ts +178 -0
- package/src/tool/jpgAWebp/i18n/ko.ts +178 -0
- package/src/tool/jpgAWebp/i18n/nl.ts +178 -0
- package/src/tool/jpgAWebp/i18n/pl.ts +178 -0
- package/src/tool/jpgAWebp/i18n/pt.ts +178 -0
- package/src/tool/jpgAWebp/i18n/ru.ts +178 -0
- package/src/tool/jpgAWebp/i18n/sv.ts +178 -0
- package/src/tool/jpgAWebp/i18n/tr.ts +178 -0
- package/src/tool/jpgAWebp/i18n/zh.ts +178 -0
- package/src/tool/jpgAWebp/index.ts +12 -0
- package/src/tool/pngAIco/i18n/de.ts +183 -0
- package/src/tool/pngAIco/i18n/en.ts +8 -13
- package/src/tool/pngAIco/i18n/es.ts +19 -24
- package/src/tool/pngAIco/i18n/fr.ts +20 -25
- package/src/tool/pngAIco/i18n/id.ts +183 -0
- package/src/tool/pngAIco/i18n/it.ts +183 -0
- package/src/tool/pngAIco/i18n/ja.ts +183 -0
- package/src/tool/pngAIco/i18n/ko.ts +183 -0
- package/src/tool/pngAIco/i18n/nl.ts +183 -0
- package/src/tool/pngAIco/i18n/pl.ts +183 -0
- package/src/tool/pngAIco/i18n/pt.ts +183 -0
- package/src/tool/pngAIco/i18n/ru.ts +183 -0
- package/src/tool/pngAIco/i18n/sv.ts +183 -0
- package/src/tool/pngAIco/i18n/tr.ts +183 -0
- package/src/tool/pngAIco/i18n/zh.ts +183 -0
- package/src/tool/pngAIco/index.ts +12 -0
- package/src/tool/pngAJpg/i18n/de.ts +191 -0
- package/src/tool/pngAJpg/i18n/en.ts +2 -12
- package/src/tool/pngAJpg/i18n/es.ts +2 -12
- package/src/tool/pngAJpg/i18n/fr.ts +2 -12
- package/src/tool/pngAJpg/i18n/id.ts +191 -0
- package/src/tool/pngAJpg/i18n/it.ts +191 -0
- package/src/tool/pngAJpg/i18n/ja.ts +191 -0
- package/src/tool/pngAJpg/i18n/ko.ts +191 -0
- package/src/tool/pngAJpg/i18n/nl.ts +191 -0
- package/src/tool/pngAJpg/i18n/pl.ts +191 -0
- package/src/tool/pngAJpg/i18n/pt.ts +191 -0
- package/src/tool/pngAJpg/i18n/ru.ts +191 -0
- package/src/tool/pngAJpg/i18n/sv.ts +191 -0
- package/src/tool/pngAJpg/i18n/tr.ts +191 -0
- package/src/tool/pngAJpg/i18n/zh.ts +191 -0
- package/src/tool/pngAJpg/index.ts +13 -1
- package/src/tool/pngAWebp/i18n/de.ts +182 -0
- package/src/tool/pngAWebp/i18n/en.ts +2 -12
- package/src/tool/pngAWebp/i18n/es.ts +2 -12
- package/src/tool/pngAWebp/i18n/fr.ts +2 -12
- package/src/tool/pngAWebp/i18n/id.ts +182 -0
- package/src/tool/pngAWebp/i18n/it.ts +182 -0
- package/src/tool/pngAWebp/i18n/ja.ts +182 -0
- package/src/tool/pngAWebp/i18n/ko.ts +182 -0
- package/src/tool/pngAWebp/i18n/nl.ts +182 -0
- package/src/tool/pngAWebp/i18n/pl.ts +182 -0
- package/src/tool/pngAWebp/i18n/pt.ts +182 -0
- package/src/tool/pngAWebp/i18n/ru.ts +182 -0
- package/src/tool/pngAWebp/i18n/sv.ts +182 -0
- package/src/tool/pngAWebp/i18n/tr.ts +182 -0
- package/src/tool/pngAWebp/i18n/zh.ts +182 -0
- package/src/tool/pngAWebp/index.ts +12 -0
- package/src/tool/svgAJpg/i18n/de.ts +178 -0
- package/src/tool/svgAJpg/i18n/en.ts +8 -13
- package/src/tool/svgAJpg/i18n/es.ts +8 -13
- package/src/tool/svgAJpg/i18n/fr.ts +2 -12
- package/src/tool/svgAJpg/i18n/id.ts +178 -0
- package/src/tool/svgAJpg/i18n/it.ts +178 -0
- package/src/tool/svgAJpg/i18n/ja.ts +178 -0
- package/src/tool/svgAJpg/i18n/ko.ts +178 -0
- package/src/tool/svgAJpg/i18n/nl.ts +178 -0
- package/src/tool/svgAJpg/i18n/pl.ts +178 -0
- package/src/tool/svgAJpg/i18n/pt.ts +178 -0
- package/src/tool/svgAJpg/i18n/ru.ts +178 -0
- package/src/tool/svgAJpg/i18n/sv.ts +178 -0
- package/src/tool/svgAJpg/i18n/tr.ts +178 -0
- package/src/tool/svgAJpg/i18n/zh.ts +178 -0
- package/src/tool/svgAJpg/index.ts +12 -0
- package/src/tool/svgAPng/i18n/de.ts +178 -0
- package/src/tool/svgAPng/i18n/en.ts +8 -13
- package/src/tool/svgAPng/i18n/es.ts +31 -36
- package/src/tool/svgAPng/i18n/fr.ts +2 -12
- package/src/tool/svgAPng/i18n/id.ts +178 -0
- package/src/tool/svgAPng/i18n/it.ts +178 -0
- package/src/tool/svgAPng/i18n/ja.ts +178 -0
- package/src/tool/svgAPng/i18n/ko.ts +178 -0
- package/src/tool/svgAPng/i18n/nl.ts +178 -0
- package/src/tool/svgAPng/i18n/pl.ts +178 -0
- package/src/tool/svgAPng/i18n/pt.ts +178 -0
- package/src/tool/svgAPng/i18n/ru.ts +178 -0
- package/src/tool/svgAPng/i18n/sv.ts +178 -0
- package/src/tool/svgAPng/i18n/tr.ts +178 -0
- package/src/tool/svgAPng/i18n/zh.ts +178 -0
- package/src/tool/svgAPng/index.ts +12 -0
- package/src/tool/webpAIco/i18n/de.ts +183 -0
- package/src/tool/webpAIco/i18n/en.ts +8 -13
- package/src/tool/webpAIco/i18n/es.ts +9 -14
- package/src/tool/webpAIco/i18n/fr.ts +11 -16
- package/src/tool/webpAIco/i18n/id.ts +183 -0
- package/src/tool/webpAIco/i18n/it.ts +183 -0
- package/src/tool/webpAIco/i18n/ja.ts +183 -0
- package/src/tool/webpAIco/i18n/ko.ts +183 -0
- package/src/tool/webpAIco/i18n/nl.ts +183 -0
- package/src/tool/webpAIco/i18n/pl.ts +183 -0
- package/src/tool/webpAIco/i18n/pt.ts +183 -0
- package/src/tool/webpAIco/i18n/ru.ts +183 -0
- package/src/tool/webpAIco/i18n/sv.ts +183 -0
- package/src/tool/webpAIco/i18n/tr.ts +183 -0
- package/src/tool/webpAIco/i18n/zh.ts +183 -0
- package/src/tool/webpAIco/index.ts +12 -0
- package/src/tool/webpAJpg/i18n/de.ts +187 -0
- package/src/tool/webpAJpg/i18n/en.ts +9 -13
- package/src/tool/webpAJpg/i18n/es.ts +37 -42
- package/src/tool/webpAJpg/i18n/fr.ts +35 -40
- package/src/tool/webpAJpg/i18n/id.ts +182 -0
- package/src/tool/webpAJpg/i18n/it.ts +182 -0
- package/src/tool/webpAJpg/i18n/ja.ts +182 -0
- package/src/tool/webpAJpg/i18n/ko.ts +182 -0
- package/src/tool/webpAJpg/i18n/nl.ts +182 -0
- package/src/tool/webpAJpg/i18n/pl.ts +182 -0
- package/src/tool/webpAJpg/i18n/pt.ts +182 -0
- package/src/tool/webpAJpg/i18n/ru.ts +182 -0
- package/src/tool/webpAJpg/i18n/sv.ts +182 -0
- package/src/tool/webpAJpg/i18n/tr.ts +182 -0
- package/src/tool/webpAJpg/i18n/zh.ts +182 -0
- package/src/tool/webpAJpg/index.ts +12 -0
- package/src/tool/webpAPng/i18n/de.ts +182 -0
- package/src/tool/webpAPng/i18n/en.ts +8 -13
- package/src/tool/webpAPng/i18n/es.ts +35 -40
- package/src/tool/webpAPng/i18n/fr.ts +2 -12
- package/src/tool/webpAPng/i18n/id.ts +182 -0
- package/src/tool/webpAPng/i18n/it.ts +182 -0
- package/src/tool/webpAPng/i18n/ja.ts +182 -0
- package/src/tool/webpAPng/i18n/ko.ts +182 -0
- package/src/tool/webpAPng/i18n/nl.ts +182 -0
- package/src/tool/webpAPng/i18n/pl.ts +182 -0
- package/src/tool/webpAPng/i18n/pt.ts +182 -0
- package/src/tool/webpAPng/i18n/ru.ts +182 -0
- package/src/tool/webpAPng/i18n/sv.ts +182 -0
- package/src/tool/webpAPng/i18n/tr.ts +182 -0
- package/src/tool/webpAPng/i18n/zh.ts +182 -0
- package/src/tool/webpAPng/index.ts +12 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { WithContext, SoftwareApplication } from 'schema-dts';
|
|
2
1
|
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
3
|
import type { SvgAPngLocaleContent } from '../index';
|
|
4
4
|
|
|
5
5
|
const slug = 'convertidor-svg-a-png';
|
|
6
6
|
const title = 'Convertir SVG a PNG Online y Gratis';
|
|
7
7
|
const description =
|
|
8
|
-
'Convierte archivos SVG vectoriales a PNG en tu navegador. Salida a doble escala
|
|
8
|
+
'Convierte archivos SVG vectoriales a PNG en tu navegador. Salida HD a doble escala. Conserva transparencias. Gratis y 100% privado.';
|
|
9
9
|
|
|
10
10
|
const ui: ImageConverterUI = {
|
|
11
11
|
dragText: 'Arrastra archivos SVG...',
|
|
@@ -22,12 +22,12 @@ const faq: SvgAPngLocaleContent['faq'] = [
|
|
|
22
22
|
{
|
|
23
23
|
question: '¿Por qué convertir archivos SVG a PNG?',
|
|
24
24
|
answer:
|
|
25
|
-
'SVG es vectorial
|
|
25
|
+
'SVG es un formato vectorial ideal para logos, pero a veces necesitas el formato PNG rasterizado para usarlo en aplicaciones que no soportan vectores, o para compartir por apps de mensajería o redes sociales.',
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
question: '¿Puedo elegir el tamaño de salida?',
|
|
29
29
|
answer:
|
|
30
|
-
'Actualmente duplicamos la escala del SVG de origen para que
|
|
30
|
+
'Actualmente duplicamos la escala del SVG de origen para que el PNG de salida sea nítido y adecuado para pantallas Retina o 4K.',
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
question: '¿Se mantienen las transparencias del SVG?',
|
|
@@ -39,15 +39,15 @@ const faq: SvgAPngLocaleContent['faq'] = [
|
|
|
39
39
|
const howTo: SvgAPngLocaleContent['howTo'] = [
|
|
40
40
|
{
|
|
41
41
|
name: 'Inserta tus archivos SVG',
|
|
42
|
-
text: '
|
|
42
|
+
text: 'Suelta tus archivos SVG o arrástralos directamente a la zona superior.',
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
|
-
name: 'Generación
|
|
46
|
-
text: 'En milisegundos nuestro motor local recreará cada vector
|
|
45
|
+
name: 'Generación de PNG HD',
|
|
46
|
+
text: 'En milisegundos nuestro motor local recreará cada vector como una capa de píxeles HD en formato PNG transparente.',
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
|
-
name: 'Descarga los
|
|
50
|
-
text: 'Guarda los PNG generados
|
|
49
|
+
name: 'Descarga los ficheros',
|
|
50
|
+
text: 'Guarda los PNG generados uno a uno o como paquete ZIP.',
|
|
51
51
|
},
|
|
52
52
|
];
|
|
53
53
|
|
|
@@ -58,7 +58,7 @@ const bibliography: SvgAPngLocaleContent['bibliography'] = [
|
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
name: 'Mozilla: SVG Tutorial',
|
|
61
|
-
url: 'https://developer.mozilla.org/
|
|
61
|
+
url: 'https://developer.mozilla.org/es/docs/Web/SVG/Tutorial',
|
|
62
62
|
},
|
|
63
63
|
];
|
|
64
64
|
|
|
@@ -70,7 +70,7 @@ const seo: SvgAPngLocaleContent['seo'] = [
|
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
72
|
type: 'paragraph',
|
|
73
|
-
html: '<strong>SVG</strong> (Scalable Vector Graphics) es la elección perfecta para el diseño web: escalable
|
|
73
|
+
html: 'El <strong>SVG</strong> (Scalable Vector Graphics) es la elección perfecta para el diseño web: infinitamente escalable, ligero y editable con cualquier editor de código. Pero cuando necesitas usar ese logo o icono en una app móvil, compartirlo en redes sociales o insertarlo en una presentación PowerPoint, te topas con un muro: la mayoría de estas plataformas no soportan SVG. El formato <strong>PNG</strong> es la solución universal: rasterizado, con canal alfa y compatible en absolutamente todos los contextos.',
|
|
74
74
|
},
|
|
75
75
|
{
|
|
76
76
|
type: 'title',
|
|
@@ -79,11 +79,11 @@ const seo: SvgAPngLocaleContent['seo'] = [
|
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
type: 'paragraph',
|
|
82
|
-
html: 'SVG almacena la imagen como instrucciones matemáticas: una curva de Bézier, un
|
|
82
|
+
html: 'SVG almacena la imagen como instrucciones matemáticas: una curva de Bézier, un degradado, un polígono. Esto significa que el mismo archivo se ve perfecto a 16px o a 16,000px. Es el formato ideal para tu código web, animaciones CSS y cualquier elemento que deba adaptarse a distintas resoluciones de pantalla sin perder ni un ápice de calidad.',
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
85
|
type: 'paragraph',
|
|
86
|
-
html: 'PNG almacena la imagen como una
|
|
86
|
+
html: 'PNG almacena la imagen como una rejilla de píxeles con información de color y transparencia para cada uno. Es un formato <strong>lossless</strong> (sin pérdida), lo que significa que la calidad se preserva íntegramente. Una vez que un SVG se convierte a PNG, la resolución es fija. Por eso, elegir el tamaño de exportación correcto es crítico: nuestra herramienta renderiza a doble escala (2x) para asegurar la nitidez en pantallas Retina y 4K.',
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
89
|
type: 'title',
|
|
@@ -101,8 +101,8 @@ const seo: SvgAPngLocaleContent['seo'] = [
|
|
|
101
101
|
points: [
|
|
102
102
|
'Tu código SVG viaja a servidores externos',
|
|
103
103
|
'Renderizado remoto con calidad inconsistente',
|
|
104
|
-
'Tiempo de espera por subida y
|
|
105
|
-
'Limitaciones en el tamaño
|
|
104
|
+
'Tiempo de espera por la subida y el procesado',
|
|
105
|
+
'Limitaciones en el tamaño del archivo SVG',
|
|
106
106
|
],
|
|
107
107
|
},
|
|
108
108
|
{
|
|
@@ -112,9 +112,9 @@ const seo: SvgAPngLocaleContent['seo'] = [
|
|
|
112
112
|
highlight: true,
|
|
113
113
|
points: [
|
|
114
114
|
'Tu SVG nunca abandona tu navegador',
|
|
115
|
-
'Renderizado
|
|
116
|
-
'PNG a 2x
|
|
117
|
-
'
|
|
115
|
+
'Renderizado con el motor nativo del navegador para máxima fidelidad',
|
|
116
|
+
'PNG a resolución 2x para pantallas de alta densidad',
|
|
117
|
+
'Transparencia preservada con canal alfa completo',
|
|
118
118
|
],
|
|
119
119
|
},
|
|
120
120
|
],
|
|
@@ -126,16 +126,16 @@ const seo: SvgAPngLocaleContent['seo'] = [
|
|
|
126
126
|
},
|
|
127
127
|
{
|
|
128
128
|
type: 'paragraph',
|
|
129
|
-
html: 'El proceso comienza cargando el archivo SVG en un elemento <strong>Image</strong> de JavaScript. Una vez que el motor del navegador ha
|
|
129
|
+
html: 'El proceso comienza cargando el archivo SVG en un elemento <strong>Image</strong> de JavaScript. Una vez que el motor del navegador ha interpretado y renderizado el XML vectorial, la imagen resultante se dibuja sobre un <strong>Canvas HTML5</strong> cuyas dimensiones son el doble del tamaño original del SVG (escala 2x). Esto produce un PNG con el doble de píxeles por dimensión, ideal para pantallas de alta resolución.',
|
|
130
130
|
},
|
|
131
131
|
{
|
|
132
132
|
type: 'paragraph',
|
|
133
|
-
html: 'A diferencia de la conversión a JPG, al exportar a PNG el canvas
|
|
133
|
+
html: 'A diferencia de la conversión a JPG, al exportar a PNG el canvas conserva el canal alfa completo: las zonas transparentes del SVG original se convierten en píxeles totalmente transparentes en el PNG resultante, sin relleno de fondo blanco. La exportación utiliza el método <code>toDataURL(\'image/png\')</code> con compresión sin pérdida.',
|
|
134
134
|
},
|
|
135
135
|
{
|
|
136
136
|
type: 'tip',
|
|
137
137
|
title: 'Consejo antes de rasterizar',
|
|
138
|
-
html: 'Elige bien el tamaño de exportación PNG
|
|
138
|
+
html: 'Elige bien el tamaño de exportación a PNG; rasterizar un SVG es un proceso de una sola dirección: no puedes recuperar los vectores a partir del PNG resultante. Mantén siempre el SVG original como fuente maestra y genera PNGs a la máxima resolución que vayas a necesitar.',
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
type: 'title',
|
|
@@ -147,9 +147,9 @@ const seo: SvgAPngLocaleContent['seo'] = [
|
|
|
147
147
|
icon: 'mdi:check-circle',
|
|
148
148
|
items: [
|
|
149
149
|
'Exportar logos vectoriales para presentaciones PowerPoint o Google Slides.',
|
|
150
|
-
'Crear iconos PNG para
|
|
150
|
+
'Crear iconos PNG para apps de iOS, Android o Progressive Web Apps.',
|
|
151
151
|
'Compartir diseños SVG en Instagram, LinkedIn u otras redes sociales.',
|
|
152
|
-
'Insertar ilustraciones vectoriales en documentos Word o
|
|
152
|
+
'Insertar ilustraciones vectoriales en documentos Word o PDFs.',
|
|
153
153
|
'Generar miniaturas PNG de gráficos SVG para previsualización en CMS.',
|
|
154
154
|
],
|
|
155
155
|
},
|
|
@@ -160,21 +160,10 @@ const seo: SvgAPngLocaleContent['seo'] = [
|
|
|
160
160
|
},
|
|
161
161
|
{
|
|
162
162
|
type: 'paragraph',
|
|
163
|
-
html: 'SVG es el lenguaje de los vectores; PNG es el pasaporte al resto del mundo digital. Esta herramienta rasteriza tus
|
|
163
|
+
html: 'SVG es el lenguaje de los vectores; PNG es el pasaporte al resto del mundo digital. Esta herramienta rasteriza tus SVGs a resolución 2x con la transparencia intacta, directamente en tu navegador, sin que un solo byte de tu diseño viaje a ningún servidor externo.',
|
|
164
164
|
},
|
|
165
165
|
];
|
|
166
166
|
|
|
167
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
168
|
-
'@context': 'https://schema.org',
|
|
169
|
-
'@type': 'SoftwareApplication',
|
|
170
|
-
name: title,
|
|
171
|
-
description,
|
|
172
|
-
applicationCategory: 'UtilitiesApplication',
|
|
173
|
-
operatingSystem: 'Web',
|
|
174
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
175
|
-
inLanguage: 'es',
|
|
176
|
-
};
|
|
177
|
-
|
|
178
167
|
export const content: SvgAPngLocaleContent = {
|
|
179
168
|
slug,
|
|
180
169
|
title,
|
|
@@ -184,5 +173,11 @@ export const content: SvgAPngLocaleContent = {
|
|
|
184
173
|
faq,
|
|
185
174
|
bibliography,
|
|
186
175
|
howTo,
|
|
187
|
-
schemas:
|
|
176
|
+
schemas: generateSchemas({
|
|
177
|
+
title,
|
|
178
|
+
description,
|
|
179
|
+
inLanguage: 'es',
|
|
180
|
+
faq,
|
|
181
|
+
howTo,
|
|
182
|
+
}),
|
|
188
183
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { WithContext, SoftwareApplication } from 'schema-dts';
|
|
2
1
|
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
3
|
import type { SvgAPngLocaleContent } from '../index';
|
|
4
4
|
|
|
5
5
|
const slug = 'convertisseur-svg-en-png';
|
|
@@ -164,16 +164,6 @@ const seo: SvgAPngLocaleContent['seo'] = [
|
|
|
164
164
|
},
|
|
165
165
|
];
|
|
166
166
|
|
|
167
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
168
|
-
'@context': 'https://schema.org',
|
|
169
|
-
'@type': 'SoftwareApplication',
|
|
170
|
-
name: title,
|
|
171
|
-
description,
|
|
172
|
-
applicationCategory: 'UtilitiesApplication',
|
|
173
|
-
operatingSystem: 'Web',
|
|
174
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
175
|
-
inLanguage: 'fr',
|
|
176
|
-
};
|
|
177
167
|
|
|
178
168
|
export const content: SvgAPngLocaleContent = {
|
|
179
169
|
slug,
|
|
@@ -184,5 +174,5 @@ export const content: SvgAPngLocaleContent = {
|
|
|
184
174
|
faq,
|
|
185
175
|
bibliography,
|
|
186
176
|
howTo,
|
|
187
|
-
schemas:
|
|
177
|
+
schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
|
|
188
178
|
};
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
|
+
import type { SvgAPngLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'konverter-svg-ke-png';
|
|
6
|
+
const title = 'Konversi SVG ke PNG Online dan Gratis';
|
|
7
|
+
const description =
|
|
8
|
+
'Konversi file vektor SVG ke PNG di browser Anda. Output HD skala ganda. Mempertahankan transparansi. Gratis dan 100% pribadi.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'Tarik file SVG...',
|
|
12
|
+
convertText: 'Untuk mengkonversinya ke PNG secara instan',
|
|
13
|
+
selectFiles: 'Pilih file',
|
|
14
|
+
processedFiles: 'File yang diproses',
|
|
15
|
+
downloadAll: 'Unduh Semua (.zip)',
|
|
16
|
+
pending: 'Menunggu',
|
|
17
|
+
bibliographyTitle: 'Referensi Bibliografi',
|
|
18
|
+
faqTitle: 'Pertanyaan yang Sering Diajukan',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: SvgAPngLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Mengapa mengonversi file SVG ke PNG?',
|
|
24
|
+
answer:
|
|
25
|
+
'SVG berbasis vektor dan ideal untuk logo, tetapi terkadang Anda memerlukan format PNG raster untuk digunakan dalam aplikasi yang tidak mendukung vektor, atau untuk dibagikan melalui aplikasi pesan atau media sosial.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Dapatkah saya memilih ukuran output?',
|
|
29
|
+
answer:
|
|
30
|
+
'Kami saat ini menduplikasi skala SVG sumber sehingga output PNG tajam dan cocok untuk layar Retina atau 4K.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Apakah transparansi SVG dipertahankan?',
|
|
34
|
+
answer:
|
|
35
|
+
'Ya, PNG yang dihasilkan mempertahankan saluran alfa dari SVG asli, menjaga semua latar belakang transparan tetap utuh.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: SvgAPngLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Masukkan file SVG Anda',
|
|
42
|
+
text: 'Letakkan file SVG Anda atau tarik langsung ke area atas.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Generasi PNG HD',
|
|
46
|
+
text: 'Dalam hitungan milidetik, mesin lokal kami akan membuat ulang setiap vektor sebagai lapisan piksel HD dalam format PNG transparan.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Unduh file',
|
|
50
|
+
text: 'Simpan PNG yang dihasilkan satu per satu atau sebagai paket ZIP.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: SvgAPngLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'Spesifikasi W3C SVG',
|
|
57
|
+
url: 'https://www.w3.org/TR/SVG/',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'Mozilla: Tutorial SVG',
|
|
61
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: SvgAPngLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'title',
|
|
68
|
+
text: 'Konverter SVG ke PNG: Dari Vektor Tak Terbatas ke Raster Universal',
|
|
69
|
+
level: 2,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'paragraph',
|
|
73
|
+
html: '<strong>SVG</strong> (Scalable Vector Graphics) adalah pilihan sempurna untuk desain web: dapat diskalakan secara tak terbatas, ringan, dan dapat diedit dengan editor kode apa pun. Tetapi ketika Anda perlu menggunakan logo atau ikon itu di aplikasi seluler, membagikannya di media sosial, atau memasukkannya ke dalam presentasi PowerPoint, Anda menemui kendala: sebagian besar platform ini tidak mendukung SVG. Format <strong>PNG</strong> adalah solusi universal: raster, dengan saluran alfa, dan kompatibel dalam setiap konteks.',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
text: 'SVG vs PNG: Vektor untuk Web, Raster untuk Dunia',
|
|
78
|
+
level: 3,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'paragraph',
|
|
82
|
+
html: 'SVG menyimpan gambar sebagai instruksi matematis: kurva Bézier, gradien, poligon. Ini berarti file yang sama terlihat sempurna pada 16px atau 16.000px. Ini adalah format ideal untuk kode web Anda, animasi CSS, dan elemen apa pun yang perlu beradaptasi dengan resolusi layar yang berbeda tanpa kehilangan kualitas.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: 'PNG menyimpan gambar sebagai kisi piksel dengan informasi warna dan transparansi untuk setiap piksel. Ini adalah format <strong>lossless</strong>, yang berarti kualitas dipertahankan sepenuhnya. Setelah SVG diraster ke PNG, resolusinya menjadi tetap. Itulah mengapa memilih ukuran ekspor yang tepat sangat penting: alat kami merender pada skala ganda (2x) untuk memastikan ketajaman pada layar Retina dan 4K.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'title',
|
|
90
|
+
text: 'Perbandingan: Konversi Lokal vs Cloud',
|
|
91
|
+
level: 3,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'comparative',
|
|
95
|
+
items: [
|
|
96
|
+
{
|
|
97
|
+
title: 'Konverter Cloud',
|
|
98
|
+
description: 'Alat yang mengunggah file Anda ke server jarak jauh.',
|
|
99
|
+
icon: 'mdi:cloud-upload',
|
|
100
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
101
|
+
points: [
|
|
102
|
+
'Kode SVG Anda dikirim ke server eksternal',
|
|
103
|
+
'Rendering jarak jauh dengan kualitas yang tidak konsisten',
|
|
104
|
+
'Waktu tunggu untuk pengunggahan dan pemrosesan',
|
|
105
|
+
'Batasan pada ukuran file SVG',
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Arsitektur Lokal Kami',
|
|
110
|
+
description: 'Pemrosesan langsung pada perangkat keras Anda menggunakan teknologi Vanilla JS.',
|
|
111
|
+
icon: 'mdi:laptop-mac',
|
|
112
|
+
highlight: true,
|
|
113
|
+
points: [
|
|
114
|
+
'SVG Anda tidak pernah meninggalkan browser',
|
|
115
|
+
'Rendering mesin browser native untuk kesetiaan maksimum',
|
|
116
|
+
'PNG resolusi 2x untuk layar dengan kepadatan tinggi',
|
|
117
|
+
'Transparansi dipertahankan dengan saluran alfa penuh',
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'title',
|
|
124
|
+
text: 'Cara Kerjanya Secara Teknis',
|
|
125
|
+
level: 3,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'paragraph',
|
|
129
|
+
html: 'Proses dimulai dengan memuat file SVG ke dalam elemen JavaScript <strong>Image</strong>. Setelah mesin browser mengurai dan merender XML vektor, gambar yang dihasilkan digambar ke <strong>HTML5 Canvas</strong> yang dimensinya dua kali lipat ukuran SVG asli (skala 2x). Ini menghasilkan PNG dengan piksel dua kali lebih banyak per dimensi, ideal untuk layar beresolusi tinggi.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'Berbeda dengan konversi ke JPG, saat mengekspor ke PNG, kanvas mempertahankan saluran alfa penuh: area transparan dalam SVG asli menjadi piksel transparan sepenuhnya dalam PNG yang dihasilkan — tanpa pengisian latar belakang putih. Ekspor menggunakan metode <code>toDataURL(\'image/png\')</code> dengan kompresi lossless.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Tip sebelum merasterisasi',
|
|
138
|
+
html: 'Pilih ukuran ekspor PNG Anda dengan hati-hati — merasterisasi SVG adalah proses satu arah: Anda tidak dapat memulihkan vektor dari PNG yang dihasilkan. Selalu simpan SVG asli sebagai sumber master, dan hasilkan PNG pada resolusi tertinggi yang mungkin Anda butuhkan.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Kasus Penggunaan dan Kompatibilitas',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'list',
|
|
147
|
+
icon: 'mdi:check-circle',
|
|
148
|
+
items: [
|
|
149
|
+
'Mengekspor logo vektor untuk presentasi PowerPoint atau Google Slides.',
|
|
150
|
+
'Membuat ikon PNG untuk iOS, Android, atau Progressive Web Apps.',
|
|
151
|
+
'Berbagi desain SVG di Instagram, LinkedIn, atau media sosial lainnya.',
|
|
152
|
+
'Memasukkan ilustrasi vektor ke dalam dokumen Word atau PDF.',
|
|
153
|
+
'Menghasilkan thumbnail PNG dari grafik SVG untuk pratinjau CMS.',
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'title',
|
|
158
|
+
text: 'Kesimpulan',
|
|
159
|
+
level: 3,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'paragraph',
|
|
163
|
+
html: 'SVG adalah bahasa vektor; PNG adalah paspor ke seluruh dunia digital. Alat ini merasterisasi SVG Anda pada resolusi 2x dengan transparansi utuh, langsung di browser Anda, tanpa satu byte pun dari desain Anda dikirim ke server eksternal mana pun.',
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
export const content: SvgAPngLocaleContent = {
|
|
169
|
+
slug,
|
|
170
|
+
title,
|
|
171
|
+
description,
|
|
172
|
+
ui,
|
|
173
|
+
seo,
|
|
174
|
+
faq,
|
|
175
|
+
bibliography,
|
|
176
|
+
howTo,
|
|
177
|
+
schemas: generateSchemas({ title, description, inLanguage: 'id', faq, howTo }),
|
|
178
|
+
};
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
|
+
import type { SvgAPngLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'convertitore-svg-in-png';
|
|
6
|
+
const title = 'Converti SVG in PNG Online e Gratis';
|
|
7
|
+
const description =
|
|
8
|
+
'Converti file vettoriali SVG in PNG nel tuo browser. Output HD in scala doppia. Mantiene la trasparenza. Gratuito e privato al 100%.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'Trascina i file SVG...',
|
|
12
|
+
convertText: 'Per convertirli in PNG istantaneamente',
|
|
13
|
+
selectFiles: 'Seleziona file',
|
|
14
|
+
processedFiles: 'File elaborati',
|
|
15
|
+
downloadAll: 'Scarica tutto (.zip)',
|
|
16
|
+
pending: 'In attesa',
|
|
17
|
+
bibliographyTitle: 'Riferimenti Bibliografici',
|
|
18
|
+
faqTitle: 'Domande Frequenti',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: SvgAPngLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Perché convertire i file SVG in PNG?',
|
|
24
|
+
answer:
|
|
25
|
+
'Il formato SVG è basato su vettori e ideale per i loghi, ma a volte è necessario il formato PNG rasterizzato per l\'uso in applicazioni che non supportano i vettori, o per condividerli tramite app di messaggistica o social media.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Posso scegliere la dimensione dell\'output?',
|
|
29
|
+
answer:
|
|
30
|
+
'Attualmente raddoppiamo la scala dell\'SVG sorgente in modo che l\'output PNG sia nitido e adatto agli schermi Retina o 4K.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Le trasparenze dell\'SVG vengono mantenute?',
|
|
34
|
+
answer:
|
|
35
|
+
'Sì, il PNG risultante preserva il canale alfa dell\'SVG originale, mantenendo intatti tutti gli sfondi trasparenti.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: SvgAPngLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Inserisci i tuoi file SVG',
|
|
42
|
+
text: 'Rilascia i tuoi file SVG o trascinali direttamente nell\'area superiore.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Generazione PNG HD',
|
|
46
|
+
text: 'In pochi millisecondi il nostro motore locale ricreerà ogni vettore come un livello di pixel HD in formato PNG trasparente.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Scarica i file',
|
|
50
|
+
text: 'Salva i PNG generati singolarmente o come pacchetto ZIP.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: SvgAPngLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'Specifica W3C SVG',
|
|
57
|
+
url: 'https://www.w3.org/TR/SVG/',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'Mozilla: Tutorial SVG',
|
|
61
|
+
url: 'https://developer.mozilla.org/it/docs/Web/SVG/Tutorial',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: SvgAPngLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'title',
|
|
68
|
+
text: 'Convertitore da SVG a PNG: Dal vettore infinito al raster universale',
|
|
69
|
+
level: 2,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'paragraph',
|
|
73
|
+
html: '<strong>SVG</strong> (Scalable Vector Graphics) è la scelta perfetta per il web design: infinitamente scalabile, leggero e modificabile con qualsiasi editor di codice. Ma quando devi usare quel logo o quell\'icona in un\'app mobile, condividerla sui social media o inserirla in una presentazione PowerPoint, ti scontri con un muro: la maggior parte di queste piattaforme non supporta l\'SVG. Il formato <strong>PNG</strong> è la soluzione universale: rasterizzato, con un canale alfa e compatibile in assolutamente ogni contesto.',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
text: 'SVG vs PNG: Vettori per il Web, Raster per il Mondo',
|
|
78
|
+
level: 3,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'paragraph',
|
|
82
|
+
html: 'L\'SVG memorizza l\'immagine come istruzioni matematiche: una curva di Bézier, una sfumatura, un poligono. Ciò significa che lo stesso file appare perfetto a 16px o 16.000px. È il formato ideale per il tuo codice web, le animazioni CSS e qualsiasi elemento che debba adattarsi a diverse risoluzioni dello schermo senza alcuna perdita di qualità.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: 'Il PNG memorizza l\'immagine come una griglia di pixel con informazioni sul colore e sulla trasparenza per ogni pixel. È un formato <strong>lossless</strong> (senza perdita), il che significa che la qualità viene preservata interamente. Una volta che un SVG è rasterizzato in PNG, la risoluzione è fissa. Ecco perché scegliere la giusta dimensione di esportazione è fondamentale: il nostro strumento esegue il rendering in scala doppia (2x) per garantire la nitidezza sugli schermi Retina e 4K.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'title',
|
|
90
|
+
text: 'Confronto: Conversione Locale vs Cloud',
|
|
91
|
+
level: 3,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'comparative',
|
|
95
|
+
items: [
|
|
96
|
+
{
|
|
97
|
+
title: 'Convertitori Cloud',
|
|
98
|
+
description: 'Strumenti che caricano i tuoi file su un server remoto.',
|
|
99
|
+
icon: 'mdi:cloud-upload',
|
|
100
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
101
|
+
points: [
|
|
102
|
+
'Il tuo codice SVG viaggia verso server esterni',
|
|
103
|
+
'Rendering remoto con qualità inconsistente',
|
|
104
|
+
'Tempo di attesa per il caricamento e l\'elaborazione',
|
|
105
|
+
'Limitazioni sulla dimensione del file SVG',
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'La Nostra Architettura Locale',
|
|
110
|
+
description: 'Elaborazione diretta sul tuo hardware utilizzando la tecnologia Vanilla JS.',
|
|
111
|
+
icon: 'mdi:laptop-mac',
|
|
112
|
+
highlight: true,
|
|
113
|
+
points: [
|
|
114
|
+
'Il tuo SVG non lascia mai il tuo browser',
|
|
115
|
+
'Rendering del motore nativo del browser per la massima fedeltà',
|
|
116
|
+
'PNG a risoluzione 2x per schermi ad alta densità',
|
|
117
|
+
'Trasparenza preservata con canale alfa completo',
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'title',
|
|
124
|
+
text: 'Come funziona tecnicamente',
|
|
125
|
+
level: 3,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'paragraph',
|
|
129
|
+
html: 'Il processo inizia caricando il file SVG in un elemento JavaScript <strong>Image</strong>. Una volta che il motore del browser ha analizzato e renderizzato l\'XML vettoriale, l\'immagine risultante viene disegnata su un <strong>HTML5 Canvas</strong> le cui dimensioni sono doppie rispetto alla dimensione SVG originale (scala 2x). Questo produce un PNG con il doppio dei pixel per dimensione, ideale per gli schermi ad alta risoluzione.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'A differenza della conversione in JPG, quando si esporta in PNG il canvas mantiene il canale alfa completo: le aree trasparenti nell\'SVG originale diventano pixel completamente trasparenti nel PNG risultante — nessuna colorazione di sfondo bianca. L\'esportazione utilizza il metodo <code>toDataURL(\'image/png\')</code> con compressione senza perdita.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Suggerimento prima della rasterizzazione',
|
|
138
|
+
html: 'Scegli attentamente la dimensione di esportazione del PNG — rasterizzare un SVG è un processo a senso unico: non puoi recuperare i vettori dal PNG risultante. Mantieni sempre l\'SVG originale come sorgente master e genera i PNG alla massima risoluzione di cui potresti aver bisogno.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Casi d\'uso e compatibilità',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'list',
|
|
147
|
+
icon: 'mdi:check-circle',
|
|
148
|
+
items: [
|
|
149
|
+
'Esportazione di loghi vettoriali per presentazioni PowerPoint o Google Slides.',
|
|
150
|
+
'Creazione di icone PNG per iOS, Android o Progressive Web Apps.',
|
|
151
|
+
'Condivisione di design SVG su Instagram, LinkedIn o altri social media.',
|
|
152
|
+
'Inserimento di illustrazioni vettoriali in documenti Word o PDF.',
|
|
153
|
+
'Generazione di miniature PNG di grafiche SVG per l\'anteprima nel CMS.',
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'title',
|
|
158
|
+
text: 'Conclusione',
|
|
159
|
+
level: 3,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'paragraph',
|
|
163
|
+
html: 'L\'SVG è il linguaggio dei vettori; il PNG è il passaporto per il resto del mondo digitale. Questo strumento rasterizza i tuoi SVG a una risoluzione 2x con la trasparenza intatta, direttamente nel tuo browser, senza che un singolo byte del tuo design viaggi verso server esterni.',
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
export const content: SvgAPngLocaleContent = {
|
|
169
|
+
slug,
|
|
170
|
+
title,
|
|
171
|
+
description,
|
|
172
|
+
ui,
|
|
173
|
+
seo,
|
|
174
|
+
faq,
|
|
175
|
+
bibliography,
|
|
176
|
+
howTo,
|
|
177
|
+
schemas: generateSchemas({ title, description, inLanguage: 'it', faq, howTo }),
|
|
178
|
+
};
|