@jjlmoya/utils-converters 1.6.0 → 1.8.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/ImageConverter.astro +2 -1
- 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/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
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
|
+
import type { GifAPngLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'conversor-gif-para-png';
|
|
6
|
+
const title = 'Converter GIF para PNG Online';
|
|
7
|
+
const description =
|
|
8
|
+
'Extraia o primeiro fotograma dos seus GIFs e converta-o para PNG preservando as transparências. Sem servidor. Processamento local. Grátis.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'Arraste os ficheiros GIF...',
|
|
12
|
+
convertText: 'Para convertê-los para PNG instantaneamente',
|
|
13
|
+
selectFiles: 'Selecionar ficheiros',
|
|
14
|
+
processedFiles: 'Ficheiros processados',
|
|
15
|
+
downloadAll: 'Descarregar Tudo (.zip)',
|
|
16
|
+
pending: 'Pendente',
|
|
17
|
+
bibliographyTitle: 'Referências Bibliográficas',
|
|
18
|
+
faqTitle: 'Perguntas Frequentes',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: GifAPngLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Porquê converter um formato animado como o GIF para um formato estático como o PNG?',
|
|
24
|
+
answer:
|
|
25
|
+
'Muitas redes sociais ou avatares não admitem fotografias que mudam. Extrair o primeiro fotograma de um GIF complexo para um PNG de alta qualidade soluciona as barreiras e reduz pesos inúteis.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Conservam-se as transparências do velho GIF no PNG resultante?',
|
|
29
|
+
answer:
|
|
30
|
+
'Sim, ao contrário do JPG, o formato PNG mantém o canal alfa. Se o GIF tinha um fundo transparente, o PNG conservá-lo-á com bordas nítidas.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Mantêm as minhas imagens nos servidores algum tempo após o processamento?',
|
|
34
|
+
answer:
|
|
35
|
+
'Nenhum servidor retém o seu GIF; toda a extração é local devido ao Canvas Web API. É o processador do seu PC quem descodifica de forma segura o seu ficheiro sem contacto com rede alguma.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: GifAPngLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Aproxime-nos a Animação',
|
|
42
|
+
text: 'Passe os pesados ficheiros GIF para o quadro de inserção.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Foto Extraída Perfeita',
|
|
46
|
+
text: 'O sistema paralisará na origem exata do movimento, retirando a cópia impecável em milissegundos.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Guarde o seu Estático',
|
|
50
|
+
text: 'Armazene massivamente em ZIP todo aquele volume de avatares GIFs estáticos convertidos para PNG.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: GifAPngLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'World Wide Web Consortium: PNG format',
|
|
57
|
+
url: 'https://www.w3.org/TR/png/',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'CompuServe GIF Information',
|
|
61
|
+
url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: GifAPngLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'title',
|
|
68
|
+
text: 'Conversor de GIF para PNG: Supere os Limites de Cor e Transparência do GIF',
|
|
69
|
+
level: 2,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'paragraph',
|
|
73
|
+
html: 'O GIF foi projetado numa época em que os monitores apenas podiam mostrar 256 cores. Décadas depois, essa limitação continua a ser a sua maior fraqueza. O PNG nasceu precisamente para substituir o GIF em todos os casos de uso onde a qualidade e a transparência importam: logotipos, ícones, gráficos de interface e qualquer imagem com fundo transparente que deva parecer perfeita sobre qualquer cor de fundo.',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
text: 'GIF vs PNG: a revolução das 16 milhões de cores',
|
|
78
|
+
level: 3,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'paragraph',
|
|
82
|
+
html: 'A diferença mais crítica entre GIF e PNG não é apenas o número de cores. O GIF suporta transparência binária: cada píxel é opaco ou completamente transparente, sem gradações. O PNG, em contrapartida, suporta canal alfa completo, com 256 níveis de opacidade por píxel. Isto significa que as bordas de um logótipo em PNG podem ser perfeitamente suavizadas, enquanto as do GIF mostram um serrilhado característico sobre fundos coloridos.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: 'Para além da transparência superior, o PNG elimina o limite de 256 cores do GIF. Capturas de ecrã, ilustrações com degradados, logotipos com sombras: todos se veem significativamente melhor em PNG. E ao tratar-se de compressão sem perda, cada píxel conserva exatamente o valor original, sem os artefactos que introduziria uma conversão para JPG.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'title',
|
|
90
|
+
text: 'Comparativa de Arquitetura: Local vs Nuvem',
|
|
91
|
+
level: 3,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'comparative',
|
|
95
|
+
items: [
|
|
96
|
+
{
|
|
97
|
+
title: 'Conversores Cloud',
|
|
98
|
+
description: 'Ferramentas que processam as suas imagens em servidores remotos.',
|
|
99
|
+
icon: 'mdi:cloud-upload',
|
|
100
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
101
|
+
points: [
|
|
102
|
+
'Os seus logotipos e ícones viajam pela internet',
|
|
103
|
+
'Tempo de espera devido à latência de rede',
|
|
104
|
+
'Limites de tamanho e número de ficheiros',
|
|
105
|
+
'As suas imagens podem ficar em caches de terceiros',
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Nossa Arquitetura Local',
|
|
110
|
+
description: 'Processamento direto no seu hardware através de tecnologia Vanilla JS.',
|
|
111
|
+
icon: 'mdi:laptop-mac',
|
|
112
|
+
highlight: true,
|
|
113
|
+
points: [
|
|
114
|
+
'O GIF nunca abandona o seu dispositivo',
|
|
115
|
+
'Conversão instantânea sem rede',
|
|
116
|
+
'Sem limites de ficheiros nem de tamanho',
|
|
117
|
+
'Privacidade absoluta: 0 bytes enviados',
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'title',
|
|
124
|
+
text: 'Como funciona a conversão local GIF para PNG',
|
|
125
|
+
level: 3,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'paragraph',
|
|
129
|
+
html: 'A conversão utiliza o Canvas API do navegador. O GIF descodifica-se em memória como um elemento Image nativo. Ao renderizá-lo sobre um canvas HTML5, o motor gráfico do navegador captura o primeiro fotograma com toda a sua informação de transparência original intacta.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'Ao contrário da conversão para JPG, com PNG não é necessário adicionar um fundo branco. O canal alfa do GIF original é preservado diretamente no PNG exportado. O método <code>toDataURL(\'image/png\')</code> gera o fluxo de bytes PNG na RAM do seu computador, sem nenhuma transmissão de rede, e o ficheiro é descarregado diretamente.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Transparência binária do GIF vs canal alfa do PNG',
|
|
138
|
+
html: 'O GIF apenas suporta transparência binária (opaco ou transparente). Ao converter para PNG, os píxeis semitransparentes do GIF mantêm-se como o navegador os interpreta. Se o seu GIF tem bordas serrilhadas, o PNG conservá-las-á — mas poderá editá-las com suavização de bordas em qualquer editor, algo impossível com o GIF original.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Casos de uso e compatibilidade do PNG resultante',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'list',
|
|
147
|
+
icon: 'mdi:check-circle',
|
|
148
|
+
items: [
|
|
149
|
+
'Logotipos e ícones para uso sobre qualquer cor de fundo.',
|
|
150
|
+
'Avatares para Discord, Telegram, Slack e plataformas de gaming.',
|
|
151
|
+
'Gráficos de interface para aplicações web e móveis.',
|
|
152
|
+
'Stickers e emojis personalizados com fundo transparente.',
|
|
153
|
+
'Capturas de ecrã e elementos UI para documentação técnica.',
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'title',
|
|
158
|
+
text: 'Conclusão: PNG é o que o GIF sempre quis ser',
|
|
159
|
+
level: 3,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'paragraph',
|
|
163
|
+
html: 'Converter de GIF para PNG não é apenas mudar de formato: é atualizar uma imagem para o padrão moderno que o GIF nunca pôde alcançar. Mais cores, melhor transparência, menos peso. A nossa ferramenta realiza esta conversão em milissegundos, diretamente no seu navegador, sem enviar nenhum dado para o exterior.',
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
export const content: GifAPngLocaleContent = {
|
|
169
|
+
slug,
|
|
170
|
+
title,
|
|
171
|
+
description,
|
|
172
|
+
ui,
|
|
173
|
+
seo,
|
|
174
|
+
faq,
|
|
175
|
+
bibliography,
|
|
176
|
+
howTo,
|
|
177
|
+
schemas: generateSchemas({ title, description, inLanguage: 'pt', 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 { GifAPngLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'konverter-gif-v-png';
|
|
6
|
+
const title = 'Конвертировать GIF в PNG Онлайн';
|
|
7
|
+
const description =
|
|
8
|
+
'Извлеките первый кадр из ваших GIF-файлов и конвертируйте его в PNG с сохранением прозрачности. Без сервера. Локальная обработка. Бесплатно.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'Перетащите файлы GIF...',
|
|
12
|
+
convertText: 'Чтобы мгновенно конвертировать их в PNG',
|
|
13
|
+
selectFiles: 'Выбрать файлы',
|
|
14
|
+
processedFiles: 'Обработанные файлы',
|
|
15
|
+
downloadAll: 'Скачать всё (.zip)',
|
|
16
|
+
pending: 'В ожидании',
|
|
17
|
+
bibliographyTitle: 'Библиографические ссылки',
|
|
18
|
+
faqTitle: 'Часто задаваемые вопросы',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: GifAPngLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Зачем конвертировать анимированный формат, такой как GIF, в статичный формат, такой как PNG?',
|
|
24
|
+
answer:
|
|
25
|
+
'Многие социальные сети или аватары не поддерживают меняющиеся фотографии. Извлечение первого кадра сложного GIF-файла в высококачественный PNG решает эти барьеры и уменьшает бесполезный вес файла.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Сохраняется ли прозрачность старого GIF в итоговом PNG?',
|
|
29
|
+
answer:
|
|
30
|
+
'Да, в отличие от JPG, формат PNG сохраняет альфа-канал. Если у GIF был прозрачный фон, PNG сохранит его с четкими краями.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Хранятся ли мои изображения на серверах какое-то время после обработки?',
|
|
34
|
+
answer:
|
|
35
|
+
'Ни один сервер не удерживает ваш GIF; все извлечение происходит локально благодаря Web Canvas API. Именно процессор вашего ПК безопасно декодирует ваш файл без контакта с сетью.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: GifAPngLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Предоставьте анимацию',
|
|
42
|
+
text: 'Перетащите тяжелые GIF-файлы в поле ввода.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Идеально извлеченное фото',
|
|
46
|
+
text: 'Система остановит движение точно в источнике, создав безупречную копию за миллисекунды.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Сохраните статичное изображение',
|
|
50
|
+
text: 'Массово сохраняйте в ZIP-архив весь объем статических аватаров GIF, конвертированных в PNG.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: GifAPngLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'World Wide Web Consortium: PNG format',
|
|
57
|
+
url: 'https://www.w3.org/TR/png/',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'CompuServe GIF Information',
|
|
61
|
+
url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: GifAPngLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'title',
|
|
68
|
+
text: 'Конвертер GIF в PNG: Приодолейте ограничения цвета и прозрачности GIF',
|
|
69
|
+
level: 2,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'paragraph',
|
|
73
|
+
html: 'GIF был разработан в те времена, когда мониторы едва ли могли отображать 256 цветов. Спустя десятилетия это ограничение остается его самой большой слабостью. PNG родился именно для того, чтобы заменить GIF во всех тех случаях, где важны качество и прозрачность: логотипы, иконки, графика интерфейса и любое изображение с прозрачным фоном, которое должно идеально смотреться на любом цвете фона.',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
text: 'GIF против PNG: революция 16 миллионов цветов',
|
|
78
|
+
level: 3,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'paragraph',
|
|
82
|
+
html: 'Самая критическая разница между GIF и PNG заключается не только в количестве цветов. GIF поддерживает бинарную прозрачность: каждый пиксель либо непрозрачен, либо полностью прозрачен, без градаций. PNG, напротив, поддерживает полноценный альфа-канал с 256 уровнями непрозрачности на пиксель. Это означает, что края логотипа в PNG могут быть идеально сглажены, в то время как края в GIF показывают характерную зазубренность на цветном фоне.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: 'В дополнение к превосходной прозрачности, PNG устраняет лимит на 256 цветов, присущий GIF. Скриншоты, иллюстрации с градиентами, логотипы с тенями: все они выглядят значительно лучше в формате PNG. И так как это сжатие без потерь, каждый пиксель сохраняет именно оригинальное значение без артефактов, которые внесла бы конвертация в JPG.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'title',
|
|
90
|
+
text: 'Сравнение архитектуры: Локальная против Облачной',
|
|
91
|
+
level: 3,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'comparative',
|
|
95
|
+
items: [
|
|
96
|
+
{
|
|
97
|
+
title: 'Облачные конвертеры',
|
|
98
|
+
description: 'Инструменты, которые обрабатывают ваши изображения на удаленных серверах.',
|
|
99
|
+
icon: 'mdi:cloud-upload',
|
|
100
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
101
|
+
points: [
|
|
102
|
+
'Ваши логотипы и иконки передаются через интернет',
|
|
103
|
+
'Время ожидания из-за задержки сети',
|
|
104
|
+
'Ограничения по размеру и количеству файлов',
|
|
105
|
+
'Ваши изображения могут остаться в кешах сторонних сервисов',
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Наша локальная архитектура',
|
|
110
|
+
description: 'Прямая обработка на вашем оборудовании с использованием технологии Vanilla JS.',
|
|
111
|
+
icon: 'mdi:laptop-mac',
|
|
112
|
+
highlight: true,
|
|
113
|
+
points: [
|
|
114
|
+
'GIF никогда не покидает ваше устройство',
|
|
115
|
+
'Мгновенная конвертация без взаимодействия с сетью',
|
|
116
|
+
'Без лимитов по количеству или размеру файлов',
|
|
117
|
+
'Абсолютная приватность: 0 байт отправлено наружу',
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'title',
|
|
124
|
+
text: 'Как работает локальная конвертация GIF в PNG',
|
|
125
|
+
level: 3,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'paragraph',
|
|
129
|
+
html: 'Конвертация использует Canvas API браузера. GIF декодируется в памяти как нативный элемент Image. При рендеринге на холсте HTML5 графический движок браузера захватывает первый кадр со всей его оригинальной информацией о прозрачности.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'В отличие от конвертации в JPG, при использовании PNG нет необходимости добавлять белый фон. Альфа-канал оригинального GIF сохраняется непосредственно в экспортируемом PNG. Метод <code>toDataURL(\'image/png\')</code> генерирует поток байтов PNG в оперативной памяти вашего компьютера без сетевой передачи, и файл загружается напрямую.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Бинарная прозрачность GIF против альфа канала PNG',
|
|
138
|
+
html: 'GIF поддерживает только бинарную прозрачность (непрозрачный или прозрачный). При конвертации в PNG полупрозрачные пиксели GIF сохраняются так, как их интерпретирует браузер. Если у вашего GIF зазубренные края, PNG сохранит их, однако вы сможете отредактировать их со сглаживанием в любом редакторе, что невозможно с оригинальным GIF-файлом.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Примеры использования и совместимость итогового PNG',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'list',
|
|
147
|
+
icon: 'mdi:check-circle',
|
|
148
|
+
items: [
|
|
149
|
+
'Логотипы и иконки для использования на любом цвете фона.',
|
|
150
|
+
'Аватары для Discord, Telegram, Slack и игровых платформ.',
|
|
151
|
+
'Графика интерфейса для веб- и мобильных приложений.',
|
|
152
|
+
'Персонализированные стикеры и эмодзи с прозрачным фоном.',
|
|
153
|
+
'Скриншоты и элементы интерфейса для технической документации.',
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'title',
|
|
158
|
+
text: 'Заключение: PNG — это то, чем GIF всегда хотел быть',
|
|
159
|
+
level: 3,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'paragraph',
|
|
163
|
+
html: 'Конвертация из GIF в PNG — это не просто смена формата: это обновление изображения до современного стандарта, которого GIF никогда не смог достичь. Больше цветов, лучше прозрачность, меньше вес. Наш инструмент выполняет эту конвертацию за миллисекунды прямо в вашем браузере, не отправляя никаких данных вовне.',
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
export const content: GifAPngLocaleContent = {
|
|
169
|
+
slug,
|
|
170
|
+
title,
|
|
171
|
+
description,
|
|
172
|
+
ui,
|
|
173
|
+
seo,
|
|
174
|
+
faq,
|
|
175
|
+
bibliography,
|
|
176
|
+
howTo,
|
|
177
|
+
schemas: generateSchemas({ title, description, inLanguage: 'ru', 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 { GifAPngLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'konvertera-gif-till-png';
|
|
6
|
+
const title = 'Konvertera GIF till PNG Online';
|
|
7
|
+
const description =
|
|
8
|
+
'Extrahera den första rutan från dina GIF-filer och konvertera den till PNG med bevarad transparens. Utan server. Lokal bearbetning. Gratis.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'Dra GIF-filer hit...',
|
|
12
|
+
convertText: 'För att konvertera dem till PNG direkt',
|
|
13
|
+
selectFiles: 'Välj filer',
|
|
14
|
+
processedFiles: 'Bearbetade filer',
|
|
15
|
+
downloadAll: 'Ladda ner alla (.zip)',
|
|
16
|
+
pending: 'Väntande',
|
|
17
|
+
bibliographyTitle: 'Bibliografiska Referenser',
|
|
18
|
+
faqTitle: 'Vanliga Frågor',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: GifAPngLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Varför konvertera ett animerat format som GIF till ett statiskt format som PNG?',
|
|
24
|
+
answer:
|
|
25
|
+
'Många sociala nätverk eller avatarer stöder inte bilder som ändras. Att extrahera den första rutan i en komplex GIF till en högkvalitativ PNG löser detta och minskar onödig filstorlek.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Bevaras transparensen från den gamla GIF-filen i den resulterande PNG-filen?',
|
|
29
|
+
answer:
|
|
30
|
+
'Ja, till skillnad från JPG behåller PNG-formatet alfakanalen. Om GIF-filen hade en transparent bakgrund kommer PNG-filen att behålla den med skarpa kanter.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Sparar ni mina bilder på servrarna ett tag efter bearbetningen?',
|
|
34
|
+
answer:
|
|
35
|
+
'Ingen server sparar din GIF; hela extraktionen sker lokalt tack vare Web Canvas API. Det är din dators processor som säkert avkodar din fil utan någon nätverkskontakt.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: GifAPngLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Dra in din animation',
|
|
42
|
+
text: 'Dra de tunga GIF-filerna till inmatningsrutan.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Perfekt extraherat foto',
|
|
46
|
+
text: 'Systemet stoppar rörelsen exakt vid ursprunget och skapar en felfri kopia på några millisekunder.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Spara din statiska bild',
|
|
50
|
+
text: 'Spara alla statiska GIF-avatarer som konverterats till PNG i ett samlat ZIP-arkiv.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: GifAPngLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'World Wide Web Consortium: PNG format',
|
|
57
|
+
url: 'https://www.w3.org/TR/png/',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'CompuServe GIF Information',
|
|
61
|
+
url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: GifAPngLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'title',
|
|
68
|
+
text: 'GIF till PNG-konverterare: Övervinn färg- och transparensgränserna för GIF',
|
|
69
|
+
level: 2,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'paragraph',
|
|
73
|
+
html: 'GIF designades vid en tidpunkt då bildskärmar knappt kunde visa 256 färger. Decennier senare är den begränsningen fortfarande dess största svaghet. PNG föddes just för att ersätta GIF i alla användningsfall där kvalitet och transparens spelar roll: logotyper, ikoner, gränssnittsgrafik och alla bilder med transparent bakgrund som måste se perfekta ut på valfri bakgrundsfärg.',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
text: 'GIF vs PNG: revolutionen med 16 miljoner färger',
|
|
78
|
+
level: 3,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'paragraph',
|
|
82
|
+
html: 'Den mest kritiska skillnaden mellan GIF och PNG är inte bara antalet färger. GIF stöder binär transparens: varje pixel är antingen opak eller helt transparent, utan graderingar. PNG stöder däremot full alfakanal, med 256 nivåer av opacitet per pixel. Detta innebär att kanterna på en logotyp i PNG kan göras helt jämna, medan de i GIF visar en karakteristisk tandad kant på färgade bakgrunder.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: 'Förutom överlägsen transparens tar PNG bort gränsen på 256 färger för GIF. Skärmdumpar, illustrationer med toningar, logotyper med skuggor – alla ser betydligt bättre ut i PNG. Och eftersom det är en förlustfri komprimering behåller varje pixel exakt sitt ursprungliga värde, utan de artefakter som en konvertering till JPG skulle introducera.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'title',
|
|
90
|
+
text: 'Arkitekturjämförelse: Lokal vs Moln',
|
|
91
|
+
level: 3,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'comparative',
|
|
95
|
+
items: [
|
|
96
|
+
{
|
|
97
|
+
title: 'Molnkonverterare',
|
|
98
|
+
description: 'Verktyg som bearbetar dina bilder på fjärrservrar.',
|
|
99
|
+
icon: 'mdi:cloud-upload',
|
|
100
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
101
|
+
points: [
|
|
102
|
+
'Dina logotyper och ikoner skickas över internet',
|
|
103
|
+
'Väntetid på grund av nätverksfördröjning',
|
|
104
|
+
'Storleksbegränsningar och begränsningar för antal filer',
|
|
105
|
+
'Dina bilder kan finnas kvar i tredjeparts cachen',
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Vår lokala arkitektur',
|
|
110
|
+
description: 'Direkt bearbetning på din hårdvara via Vanilla JS-teknik.',
|
|
111
|
+
icon: 'mdi:laptop-mac',
|
|
112
|
+
highlight: true,
|
|
113
|
+
points: [
|
|
114
|
+
'GIF-filen lämnar aldrig din enhet',
|
|
115
|
+
'Omedelbar konvertering utan nätverk',
|
|
116
|
+
'Inga fil- eller storleksbegränsningar',
|
|
117
|
+
'Total integritet: 0 byte skickas',
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'title',
|
|
124
|
+
text: 'Hur den lokala GIF till PNG-konverteringen fungerar',
|
|
125
|
+
level: 3,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'paragraph',
|
|
129
|
+
html: 'Konverteringen använder webbläsarens Canvas API. GIF-filen avkodas i minnet som ett inbyggt Image-element. Vid rendering på en HTML5-canvas fångar webbläsarens grafikmotor den första rutan med all dess ursprungliga transparensinformation intakt.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'Till skillnad från konvertering till JPG krävs ingen vit bakgrund med PNG. Alfakanalen från den ursprungliga GIF-filen bevaras direkt i den exporterade PNG-filen. Canvas-metoden <code>toDataURL(\'image/png\')</code> genererar PNG-byteströmmen i din dators RAM-minne utan någon nätverksöverföring, och filen laddas ner direkt.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Binär transparens för GIF vs alfakanal för PNG',
|
|
138
|
+
html: 'GIF stöder endast binär transparens (opak eller transparent). Vid konvertering till PNG bibehålls de halvtransparenta pixlarna i GIF-filen så som webbläsaren tolkar dem. Om din GIF har tandade kanter kommer PNG-filen att behålla dem — men du kan redigera dem med kantutjämning i valfri redigerare, något som är omöjligt med den ursprungliga GIF-filen.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Användningsfall och kompatibilitet för resulterande PNG',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'list',
|
|
147
|
+
icon: 'mdi:check-circle',
|
|
148
|
+
items: [
|
|
149
|
+
'Logotyper och ikoner för användning på valfri bakgrundsfärg.',
|
|
150
|
+
'Avatarer för Discord, Telegram, Slack och spelplattformar.',
|
|
151
|
+
'Gränssnittsgrafik för webb- och mobilappar.',
|
|
152
|
+
'Personliga klistermärken och emojis med transparent bakgrund.',
|
|
153
|
+
'Skärmdumpar och UI-element för teknisk dokumentation.',
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'title',
|
|
158
|
+
text: 'Slutsats: PNG är vad GIF alltid ville vara',
|
|
159
|
+
level: 3,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'paragraph',
|
|
163
|
+
html: 'Att konvertera från GIF till PNG är inte bara att byta format: det är att uppgradera en bild till den moderna standard som GIF aldrig kunde nå. Fler färger, bättre transparens, mindre vikt. Vårt verktyg utför denna konvertering på några millisekunder direkt i din webbläsare utan att skicka några data utåt.',
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
export const content: GifAPngLocaleContent = {
|
|
169
|
+
slug,
|
|
170
|
+
title,
|
|
171
|
+
description,
|
|
172
|
+
ui,
|
|
173
|
+
seo,
|
|
174
|
+
faq,
|
|
175
|
+
bibliography,
|
|
176
|
+
howTo,
|
|
177
|
+
schemas: generateSchemas({ title, description, inLanguage: 'sv', faq, howTo }),
|
|
178
|
+
};
|