@jjlmoya/utils-converters 1.1.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 +61 -0
- package/src/category/i18n/en.ts +90 -0
- package/src/category/i18n/es.ts +90 -0
- package/src/category/i18n/fr.ts +90 -0
- package/src/category/index.ts +39 -0
- package/src/category/seo.astro +15 -0
- package/src/components/PreviewNavSidebar.astro +116 -0
- package/src/components/PreviewToolbar.astro +152 -0
- package/src/data.ts +34 -0
- package/src/env.d.ts +5 -0
- package/src/index.ts +39 -0
- package/src/layouts/PreviewLayout.astro +117 -0
- package/src/pages/[locale]/[slug].astro +148 -0
- package/src/pages/[locale].astro +271 -0
- package/src/pages/index.astro +4 -0
- package/src/shared/ImageConverter.astro +237 -0
- package/src/shared/logic/converter.ts +167 -0
- package/src/shared/style.css +258 -0
- package/src/tests/faq_count.test.ts +10 -0
- package/src/tests/mocks/astro_mock.js +2 -0
- package/src/tests/seo_length.test.ts +22 -0
- package/src/tests/tool_validation.test.ts +17 -0
- package/src/tool/avifAJpg/bibliography.astro +14 -0
- package/src/tool/avifAJpg/component.astro +8 -0
- package/src/tool/avifAJpg/i18n/en.ts +123 -0
- package/src/tool/avifAJpg/i18n/es.ts +123 -0
- package/src/tool/avifAJpg/i18n/fr.ts +118 -0
- package/src/tool/avifAJpg/index.ts +29 -0
- package/src/tool/avifAJpg/seo.astro +14 -0
- package/src/tool/avifAPng/bibliography.astro +14 -0
- package/src/tool/avifAPng/component.astro +8 -0
- package/src/tool/avifAPng/i18n/en.ts +118 -0
- package/src/tool/avifAPng/i18n/es.ts +123 -0
- package/src/tool/avifAPng/i18n/fr.ts +118 -0
- package/src/tool/avifAPng/index.ts +29 -0
- package/src/tool/avifAPng/seo.astro +14 -0
- package/src/tool/avifAWebp/bibliography.astro +14 -0
- package/src/tool/avifAWebp/component.astro +8 -0
- package/src/tool/avifAWebp/i18n/en.ts +118 -0
- package/src/tool/avifAWebp/i18n/es.ts +123 -0
- package/src/tool/avifAWebp/i18n/fr.ts +118 -0
- package/src/tool/avifAWebp/index.ts +29 -0
- package/src/tool/avifAWebp/seo.astro +14 -0
- package/src/tool/bmpAJpg/bibliography.astro +14 -0
- package/src/tool/bmpAJpg/component.astro +8 -0
- package/src/tool/bmpAJpg/i18n/en.ts +123 -0
- package/src/tool/bmpAJpg/i18n/es.ts +123 -0
- package/src/tool/bmpAJpg/i18n/fr.ts +118 -0
- package/src/tool/bmpAJpg/index.ts +29 -0
- package/src/tool/bmpAJpg/seo.astro +14 -0
- package/src/tool/bmpAPng/bibliography.astro +14 -0
- package/src/tool/bmpAPng/component.astro +8 -0
- package/src/tool/bmpAPng/i18n/en.ts +123 -0
- package/src/tool/bmpAPng/i18n/es.ts +123 -0
- package/src/tool/bmpAPng/i18n/fr.ts +118 -0
- package/src/tool/bmpAPng/index.ts +29 -0
- package/src/tool/bmpAPng/seo.astro +14 -0
- package/src/tool/bmpAWebp/bibliography.astro +14 -0
- package/src/tool/bmpAWebp/component.astro +8 -0
- package/src/tool/bmpAWebp/i18n/en.ts +118 -0
- package/src/tool/bmpAWebp/i18n/es.ts +123 -0
- package/src/tool/bmpAWebp/i18n/fr.ts +118 -0
- package/src/tool/bmpAWebp/index.ts +29 -0
- package/src/tool/bmpAWebp/seo.astro +14 -0
- package/src/tool/gifAJpg/bibliography.astro +14 -0
- package/src/tool/gifAJpg/component.astro +8 -0
- package/src/tool/gifAJpg/i18n/en.ts +123 -0
- package/src/tool/gifAJpg/i18n/es.ts +123 -0
- package/src/tool/gifAJpg/i18n/fr.ts +118 -0
- package/src/tool/gifAJpg/index.ts +29 -0
- package/src/tool/gifAJpg/seo.astro +14 -0
- package/src/tool/gifAPng/bibliography.astro +14 -0
- package/src/tool/gifAPng/component.astro +8 -0
- package/src/tool/gifAPng/i18n/en.ts +123 -0
- package/src/tool/gifAPng/i18n/es.ts +123 -0
- package/src/tool/gifAPng/i18n/fr.ts +118 -0
- package/src/tool/gifAPng/index.ts +29 -0
- package/src/tool/gifAPng/seo.astro +14 -0
- package/src/tool/gifAWebp/bibliography.astro +14 -0
- package/src/tool/gifAWebp/component.astro +8 -0
- package/src/tool/gifAWebp/i18n/en.ts +123 -0
- package/src/tool/gifAWebp/i18n/es.ts +123 -0
- package/src/tool/gifAWebp/i18n/fr.ts +118 -0
- package/src/tool/gifAWebp/index.ts +29 -0
- package/src/tool/gifAWebp/seo.astro +14 -0
- package/src/tool/imagenBase64/bibliography.astro +14 -0
- package/src/tool/imagenBase64/component.astro +159 -0
- package/src/tool/imagenBase64/i18n/en.ts +137 -0
- package/src/tool/imagenBase64/i18n/es.ts +137 -0
- package/src/tool/imagenBase64/i18n/fr.ts +132 -0
- package/src/tool/imagenBase64/index.ts +43 -0
- package/src/tool/imagenBase64/seo.astro +14 -0
- package/src/tool/imagenBase64/style.css +299 -0
- package/src/tool/jpgAIco/bibliography.astro +14 -0
- package/src/tool/jpgAIco/component.astro +8 -0
- package/src/tool/jpgAIco/i18n/en.ts +123 -0
- package/src/tool/jpgAIco/i18n/es.ts +123 -0
- package/src/tool/jpgAIco/i18n/fr.ts +118 -0
- package/src/tool/jpgAIco/index.ts +29 -0
- package/src/tool/jpgAIco/seo.astro +14 -0
- package/src/tool/jpgAPng/bibliography.astro +14 -0
- package/src/tool/jpgAPng/component.astro +8 -0
- package/src/tool/jpgAPng/i18n/en.ts +128 -0
- package/src/tool/jpgAPng/i18n/es.ts +128 -0
- package/src/tool/jpgAPng/i18n/fr.ts +123 -0
- package/src/tool/jpgAPng/index.ts +29 -0
- package/src/tool/jpgAPng/seo.astro +14 -0
- package/src/tool/jpgAWebp/bibliography.astro +14 -0
- package/src/tool/jpgAWebp/component.astro +8 -0
- package/src/tool/jpgAWebp/i18n/en.ts +118 -0
- package/src/tool/jpgAWebp/i18n/es.ts +123 -0
- package/src/tool/jpgAWebp/i18n/fr.ts +118 -0
- package/src/tool/jpgAWebp/index.ts +29 -0
- package/src/tool/jpgAWebp/seo.astro +14 -0
- package/src/tool/pngAIco/bibliography.astro +14 -0
- package/src/tool/pngAIco/component.astro +8 -0
- package/src/tool/pngAIco/i18n/en.ts +123 -0
- package/src/tool/pngAIco/i18n/es.ts +123 -0
- package/src/tool/pngAIco/i18n/fr.ts +118 -0
- package/src/tool/pngAIco/index.ts +29 -0
- package/src/tool/pngAIco/seo.astro +14 -0
- package/src/tool/pngAJpg/bibliography.astro +14 -0
- package/src/tool/pngAJpg/component.astro +8 -0
- package/src/tool/pngAJpg/i18n/en.ts +133 -0
- package/src/tool/pngAJpg/i18n/es.ts +201 -0
- package/src/tool/pngAJpg/i18n/fr.ts +128 -0
- package/src/tool/pngAJpg/index.ts +29 -0
- package/src/tool/pngAJpg/seo.astro +14 -0
- package/src/tool/pngAWebp/bibliography.astro +14 -0
- package/src/tool/pngAWebp/component.astro +8 -0
- package/src/tool/pngAWebp/i18n/en.ts +127 -0
- package/src/tool/pngAWebp/i18n/es.ts +132 -0
- package/src/tool/pngAWebp/i18n/fr.ts +122 -0
- package/src/tool/pngAWebp/index.ts +29 -0
- package/src/tool/pngAWebp/seo.astro +14 -0
- package/src/tool/svgAJpg/bibliography.astro +14 -0
- package/src/tool/svgAJpg/component.astro +8 -0
- package/src/tool/svgAJpg/i18n/en.ts +118 -0
- package/src/tool/svgAJpg/i18n/es.ts +123 -0
- package/src/tool/svgAJpg/i18n/fr.ts +118 -0
- package/src/tool/svgAJpg/index.ts +29 -0
- package/src/tool/svgAJpg/seo.astro +14 -0
- package/src/tool/svgAPng/bibliography.astro +14 -0
- package/src/tool/svgAPng/component.astro +8 -0
- package/src/tool/svgAPng/i18n/en.ts +123 -0
- package/src/tool/svgAPng/i18n/es.ts +128 -0
- package/src/tool/svgAPng/i18n/fr.ts +118 -0
- package/src/tool/svgAPng/index.ts +29 -0
- package/src/tool/svgAPng/seo.astro +14 -0
- package/src/tool/webpAIco/bibliography.astro +14 -0
- package/src/tool/webpAIco/component.astro +8 -0
- package/src/tool/webpAIco/i18n/en.ts +123 -0
- package/src/tool/webpAIco/i18n/es.ts +123 -0
- package/src/tool/webpAIco/i18n/fr.ts +118 -0
- package/src/tool/webpAIco/index.ts +29 -0
- package/src/tool/webpAIco/seo.astro +14 -0
- package/src/tool/webpAJpg/bibliography.astro +14 -0
- package/src/tool/webpAJpg/component.astro +8 -0
- package/src/tool/webpAJpg/i18n/en.ts +122 -0
- package/src/tool/webpAJpg/i18n/es.ts +127 -0
- package/src/tool/webpAJpg/i18n/fr.ts +122 -0
- package/src/tool/webpAJpg/index.ts +29 -0
- package/src/tool/webpAJpg/seo.astro +14 -0
- package/src/tool/webpAPng/bibliography.astro +14 -0
- package/src/tool/webpAPng/component.astro +8 -0
- package/src/tool/webpAPng/i18n/en.ts +127 -0
- package/src/tool/webpAPng/i18n/es.ts +132 -0
- package/src/tool/webpAPng/i18n/fr.ts +122 -0
- package/src/tool/webpAPng/index.ts +29 -0
- package/src/tool/webpAPng/seo.astro +14 -0
- package/src/tools.ts +70 -0
- package/src/types.ts +69 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ConvertersToolEntry, ToolLocaleContent, ToolDefinition } from '../../types';
|
|
2
|
+
import type { ImageConverterUI } from '../../shared/ImageConverter.astro';
|
|
3
|
+
import SvgAPngCalculator from './component.astro';
|
|
4
|
+
import SvgAPngSEO from './seo.astro';
|
|
5
|
+
import SvgAPngBibliography from './bibliography.astro';
|
|
6
|
+
|
|
7
|
+
export type SvgAPngLocaleContent = ToolLocaleContent<ImageConverterUI>;
|
|
8
|
+
|
|
9
|
+
export const svgAPng: ConvertersToolEntry<ImageConverterUI> = {
|
|
10
|
+
id: 'svg-a-png',
|
|
11
|
+
icons: {
|
|
12
|
+
bg: 'mdi:svg',
|
|
13
|
+
fg: 'mdi:file-export',
|
|
14
|
+
},
|
|
15
|
+
i18n: {
|
|
16
|
+
es: () => import('./i18n/es').then((m) => m.content),
|
|
17
|
+
en: () => import('./i18n/en').then((m) => m.content),
|
|
18
|
+
fr: () => import('./i18n/fr').then((m) => m.content),
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { SvgAPngCalculator, SvgAPngSEO, SvgAPngBibliography };
|
|
23
|
+
|
|
24
|
+
export const SVG_A_PNG_TOOL: ToolDefinition = {
|
|
25
|
+
entry: svgAPng,
|
|
26
|
+
Component: SvgAPngCalculator,
|
|
27
|
+
SEOComponent: SvgAPngSEO,
|
|
28
|
+
BibliographyComponent: SvgAPngBibliography,
|
|
29
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { svgAPng } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { locale = 'es' } = Astro.props;
|
|
11
|
+
const content = await svgAPng.i18n[locale]?.();
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
{content && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { webpAIco } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { locale = 'es' } = Astro.props;
|
|
11
|
+
const content = await webpAIco.i18n[locale]?.();
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
{content && <SharedBibliography links={content.bibliography} title={content.ui.bibliographyTitle} />}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
import SharedImageConverter from '../../shared/ImageConverter.astro';
|
|
3
|
+
import type { ImageConverterUI } from '../../shared/ImageConverter.astro';
|
|
4
|
+
|
|
5
|
+
interface Props { ui: ImageConverterUI }
|
|
6
|
+
const { ui } = Astro.props;
|
|
7
|
+
---
|
|
8
|
+
<SharedImageConverter from="webp" to="ico" ui={ui} />
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
3
|
+
import type { WebpAIcoLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'webp-to-ico-converter';
|
|
6
|
+
const title = 'Convert WebP to ICO | Install Your Favicons and Logos in Windows';
|
|
7
|
+
const description =
|
|
8
|
+
'Convert WebP images to official ICO with transparency. No file uploads. Real Microsoft binary headers. Free and private.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'Drag WebP files...',
|
|
12
|
+
convertText: 'To convert them to ICO instantly',
|
|
13
|
+
selectFiles: 'Select files',
|
|
14
|
+
processedFiles: 'Processed files',
|
|
15
|
+
downloadAll: 'Download All (.zip)',
|
|
16
|
+
pending: 'Pending',
|
|
17
|
+
bibliographyTitle: 'Bibliographic References',
|
|
18
|
+
faqTitle: 'Frequently Asked Questions',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: WebpAIcoLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Can I convert WebP sticker designs to an official web Favicon ICO?',
|
|
24
|
+
answer:
|
|
25
|
+
'Exactly. The Favicon still demands the classic Microsoft ICO extension for extreme universal compatibility. This tool will inject binary headers building a 100% legitimate icon.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Do I have to wait in online queues when making my huge batch of corporate icons?',
|
|
29
|
+
answer:
|
|
30
|
+
'Not at all. Our converter loads the Javascript and cuts any upload network. Your same phone CPU processes a hundred photos or more asynchronously.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Will the resulting ICO support the transparency of my original WebP?',
|
|
34
|
+
answer:
|
|
35
|
+
'Yes. Our engine works internally with the HTML5 canvas API at 32-bit full support, every transparent hole will cleanly transfer to the iconographic file.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: WebpAIcoLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Drag all your local WebP stickers',
|
|
42
|
+
text: 'Move the heavy photo batches without fear of the web limit saturating.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Logical asynchronous translation and direct assembly',
|
|
46
|
+
text: 'Quickly notice how the bar and elements autocomplete while memory processes the block byte by byte from the frame.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Take your pack for systems and web development',
|
|
50
|
+
text: 'Freely click a massive downloadable button in a joint file or download manually if you only need one.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: WebpAIcoLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'ICO Web Header General Documentation',
|
|
57
|
+
url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'Google WebP Documentation',
|
|
61
|
+
url: 'https://developers.google.com/speed/webp',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: WebpAIcoLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'title',
|
|
68
|
+
text: 'Free Online WebP to ICO Converter',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: 'paragraph',
|
|
72
|
+
html:
|
|
73
|
+
'WebP is the preferred modern image format for the web, frequently used for logos, UI icons and application graphics. When you need to convert these WebP designs into real icons for Windows or Favicons for websites, you need the ICO format with the correct binary structure.',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'paragraph',
|
|
77
|
+
html:
|
|
78
|
+
'A key advantage of converting WebP to ICO (instead of JPG to ICO) is the preservation of transparencies. WebP supports the alpha channel just like PNG, so our converter can transfer those transparencies to the resulting ICO. You will get a perfectly functional transparent background icon both in Windows and web browsers.',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'tip',
|
|
82
|
+
html:
|
|
83
|
+
'If you have a logo or sticker in WebP format with transparent background and want to use it as a Favicon for your website, convert directly to ICO for the best result with preserved transparency.',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
type: 'paragraph',
|
|
87
|
+
html:
|
|
88
|
+
'The ICO Favicon format is supported by 100% of web browsers for displaying the browser tab icon. While PNG also works, ICO offers maximum compatibility including Internet Explorer and older browsers.',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
type: 'paragraph',
|
|
92
|
+
html:
|
|
93
|
+
'The entire process happens in your browser. The WebP file is decoded using the browser\'s native support, rendered on an HTML5 canvas and encoded as ICO with the correct Microsoft binary headers. No data is transferred to external servers.',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
type: 'paragraph',
|
|
97
|
+
html:
|
|
98
|
+
'Convert WebP to ICO with preserved transparency and real binary headers. Free, private and unlimited. The best converter for Favicons and Windows icons from WebP.',
|
|
99
|
+
},
|
|
100
|
+
];
|
|
101
|
+
|
|
102
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
103
|
+
'@context': 'https://schema.org',
|
|
104
|
+
'@type': 'SoftwareApplication',
|
|
105
|
+
name: title,
|
|
106
|
+
description,
|
|
107
|
+
applicationCategory: 'UtilitiesApplication',
|
|
108
|
+
operatingSystem: 'Web',
|
|
109
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
110
|
+
inLanguage: 'en',
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export const content: WebpAIcoLocaleContent = {
|
|
114
|
+
slug,
|
|
115
|
+
title,
|
|
116
|
+
description,
|
|
117
|
+
ui,
|
|
118
|
+
seo,
|
|
119
|
+
faq,
|
|
120
|
+
bibliography,
|
|
121
|
+
howTo,
|
|
122
|
+
schemas: [appSchema as any],
|
|
123
|
+
};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
3
|
+
import type { WebpAIcoLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'convertidor-webp-a-ico';
|
|
6
|
+
const title = 'Convertir WebP a ICO | Instala tus Favicons y logos en Windows';
|
|
7
|
+
const description =
|
|
8
|
+
'Convierte imágenes WebP a ICO oficial con transparencias. Sin subir archivos. Cabeceras binarias reales de Microsoft. Gratis y privado.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'Arrastra archivos WebP...',
|
|
12
|
+
convertText: 'Para convertirlos a ICO al instante',
|
|
13
|
+
selectFiles: 'Seleccionar archivos',
|
|
14
|
+
processedFiles: 'Archivos procesados',
|
|
15
|
+
downloadAll: 'Descargar Todo (.zip)',
|
|
16
|
+
pending: 'Pendiente',
|
|
17
|
+
bibliographyTitle: 'Referencias Bibliográficas',
|
|
18
|
+
faqTitle: 'Preguntas Frecuentes',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: WebpAIcoLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: '¿Puedo pasar diseños de stickers WebP a un Favicon ICO oficial web?',
|
|
24
|
+
answer:
|
|
25
|
+
'Exacto. El Favicon todavía demanda la clásica extensión de Microsoft ICO para compatibilidad extrema universal. Esta herramienta inyectará cabeceras binarias construyendo un icono 100% lícito.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: '¿Tengo que esperar colas online al hacer mi lote enorme de iconos corporativos?',
|
|
29
|
+
answer:
|
|
30
|
+
'De ninguna manera. Nuestro conversor carga el Javascript y corta cualquier red de subida. Tu mismo celular CPU procesa cien fotos o más de forma asíncrona.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: '¿Soportará las transparencias de mi WebP original el nuevo ICO resultante?',
|
|
34
|
+
answer:
|
|
35
|
+
'Así es. Nuestro motor funciona internamente con el lienzo API de HTML5 a 32 bits de soporte completo, todo agujero transparente saltará limpio al archivo iconográfico.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: WebpAIcoLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Arrastra Todas Tus Pegatinas Locales WebP',
|
|
42
|
+
text: 'Mueve los pesados lotes fotográficos sin temor a que el límite web sature.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Traducción Asíncrona Lógica Y Ensamblaje Directo',
|
|
46
|
+
text: 'Fíjate velozmente cómo la barra y los elementos se autocompletan mientras la memoria procesa el bloque byte por byte del marco.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Lleva Tú Pack Para Sistemas y Desarrollo Web',
|
|
50
|
+
text: 'Pincha libre un botón masivo descargable en fichero conjunto o baja manual si necesitas apenas uno.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: WebpAIcoLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'Registro y Documento General Web ICO Header',
|
|
57
|
+
url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'Google WebP Documentation',
|
|
61
|
+
url: 'https://developers.google.com/speed/webp',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: WebpAIcoLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'title',
|
|
68
|
+
text: 'Convertidor WebP a ICO Online Gratuito',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: 'paragraph',
|
|
72
|
+
html:
|
|
73
|
+
'El formato WebP es el formato de imagen moderno preferido para la web, utilizado frecuentemente para logos, iconos de interfaz y gráficos de aplicaciones. Cuando necesitas convertir estos diseños WebP en iconos reales para Windows o Favicons para sitios web, necesitas el formato ICO con la estructura binaria correcta.',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'paragraph',
|
|
77
|
+
html:
|
|
78
|
+
'Una ventaja clave de convertir WebP a ICO (en lugar de JPG a ICO) es la preservación de las transparencias. El WebP soporta el canal alfa igual que PNG, por lo que nuestro convertidor puede transferir esas transparencias al ICO resultante. Obtendrás un icono con fondo transparente perfectamente funcional tanto en Windows como en navegadores web.',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'paragraph',
|
|
82
|
+
html:
|
|
83
|
+
'El proceso completo ocurre en tu navegador. El archivo WebP se decodifica usando el soporte nativo del navegador, se renderiza en un canvas HTML5 y se codifica como ICO con las cabeceras binarias de Microsoft correctas. No hay transferencia de datos a servidores externos.',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
type: 'tip',
|
|
87
|
+
html:
|
|
88
|
+
'Si tienes un logo o sticker en formato WebP con fondo transparente y quieres usarlo como Favicon de tu sitio web, convierte directamente a ICO para obtener el mejor resultado con transparencia preservada.',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
type: 'paragraph',
|
|
92
|
+
html:
|
|
93
|
+
'El formato Favicon ICO es el estándar soportado por el 100% de los navegadores web para mostrar el icono de la pestaña del navegador. Aunque PNG también funciona, ICO ofrece compatibilidad máxima incluyendo Internet Explorer y navegadores más antiguos.',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
type: 'paragraph',
|
|
97
|
+
html:
|
|
98
|
+
'Convierte WebP a ICO con transparencias preservadas y cabeceras binarias reales. Gratis, privado y sin límites. El mejor conversor para Favicons y iconos de Windows desde WebP.',
|
|
99
|
+
},
|
|
100
|
+
];
|
|
101
|
+
|
|
102
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
103
|
+
'@context': 'https://schema.org',
|
|
104
|
+
'@type': 'SoftwareApplication',
|
|
105
|
+
name: title,
|
|
106
|
+
description,
|
|
107
|
+
applicationCategory: 'UtilitiesApplication',
|
|
108
|
+
operatingSystem: 'Web',
|
|
109
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
110
|
+
inLanguage: 'es',
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export const content: WebpAIcoLocaleContent = {
|
|
114
|
+
slug,
|
|
115
|
+
title,
|
|
116
|
+
description,
|
|
117
|
+
ui,
|
|
118
|
+
seo,
|
|
119
|
+
faq,
|
|
120
|
+
bibliography,
|
|
121
|
+
howTo,
|
|
122
|
+
schemas: [appSchema as any],
|
|
123
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
3
|
+
import type { WebpAIcoLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'convertisseur-webp-en-ico';
|
|
6
|
+
const title = 'Convertir WebP en ICO | Installez vos Favicons et Logos dans Windows';
|
|
7
|
+
const description =
|
|
8
|
+
'Convertissez des images WebP en ICO officiel avec transparence. Sans téléchargement. Vrais en-têtes binaires Microsoft. Gratuit et privé.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'Faites glisser des fichiers WebP...',
|
|
12
|
+
convertText: 'Pour les convertir en ICO instantanément',
|
|
13
|
+
selectFiles: 'Sélectionner des fichiers',
|
|
14
|
+
processedFiles: 'Fichiers traités',
|
|
15
|
+
downloadAll: 'Tout télécharger (.zip)',
|
|
16
|
+
pending: 'En attente',
|
|
17
|
+
bibliographyTitle: 'Références Bibliographiques',
|
|
18
|
+
faqTitle: 'Questions Fréquentes',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: WebpAIcoLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Puis-je convertir des designs de stickers WebP en un Favicon ICO officiel web ?',
|
|
24
|
+
answer:
|
|
25
|
+
'Exactement. Le Favicon exige encore la classique extension ICO de Microsoft pour une compatibilité universelle extrême. Cet outil injectera des en-têtes binaires construisant une icône 100% légitime.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Dois-je attendre des files d\'attente en ligne lors de la création de mon énorme lot d\'icônes corporatives ?',
|
|
29
|
+
answer:
|
|
30
|
+
'Pas du tout. Notre convertisseur charge le Javascript et coupe tout réseau de téléchargement. Votre propre CPU de téléphone traite cent photos ou plus de manière asynchrone.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'L\'ICO résultant supportera-t-il les transparences de mon WebP original ?',
|
|
34
|
+
answer:
|
|
35
|
+
'Oui. Notre moteur fonctionne en interne avec l\'API canvas HTML5 à 32 bits de support complet, chaque trou transparent passera proprement dans le fichier iconographique.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: WebpAIcoLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Faites glisser tous vos stickers WebP locaux',
|
|
42
|
+
text: 'Déplacez les lots de photos lourdes sans craindre la saturation de la limite web.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Traduction asynchrone logique et assemblage direct',
|
|
46
|
+
text: 'Remarquez rapidement comment la barre et les éléments se complètent automatiquement pendant que la mémoire traite le bloc octet par octet du cadre.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Emportez votre pack pour systèmes et développement web',
|
|
50
|
+
text: 'Cliquez librement sur un bouton téléchargeable massif dans un fichier joint ou téléchargez manuellement si vous n\'en avez besoin que d\'un seul.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: WebpAIcoLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'Documentation Générale ICO Web Header',
|
|
57
|
+
url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'Documentation Google WebP',
|
|
61
|
+
url: 'https://developers.google.com/speed/webp',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: WebpAIcoLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'title',
|
|
68
|
+
text: 'Convertisseur WebP vers ICO en Ligne Gratuit',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: 'paragraph',
|
|
72
|
+
html:
|
|
73
|
+
'WebP est le format d\'image moderne préféré pour le web, fréquemment utilisé pour les logos, icônes d\'interface et graphiques d\'applications. Lorsque vous devez convertir ces designs WebP en vraies icônes pour Windows ou Favicons pour des sites web, vous avez besoin du format ICO avec la structure binaire correcte.',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'paragraph',
|
|
77
|
+
html:
|
|
78
|
+
'Un avantage clé de la conversion WebP en ICO (au lieu de JPG en ICO) est la préservation des transparences. WebP supporte le canal alpha tout comme PNG, donc notre convertisseur peut transférer ces transparences dans l\'ICO résultant. Vous obtiendrez une icône à fond transparent parfaitement fonctionnelle dans Windows et les navigateurs web.',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'tip',
|
|
82
|
+
html:
|
|
83
|
+
'Si vous avez un logo ou un sticker au format WebP avec fond transparent et souhaitez l\'utiliser comme Favicon de votre site web, convertissez directement en ICO pour le meilleur résultat avec transparence préservée.',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
type: 'paragraph',
|
|
87
|
+
html:
|
|
88
|
+
'Le format Favicon ICO est supporté par 100% des navigateurs web pour afficher l\'icône de l\'onglet du navigateur. Bien que PNG fonctionne aussi, ICO offre une compatibilité maximale incluant Internet Explorer et les navigateurs plus anciens.',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
type: 'paragraph',
|
|
92
|
+
html:
|
|
93
|
+
'Convertissez WebP en ICO avec transparence préservée et vrais en-têtes binaires. Gratuit, privé et illimité. Le meilleur convertisseur pour les Favicons et icônes Windows depuis WebP.',
|
|
94
|
+
},
|
|
95
|
+
];
|
|
96
|
+
|
|
97
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
98
|
+
'@context': 'https://schema.org',
|
|
99
|
+
'@type': 'SoftwareApplication',
|
|
100
|
+
name: title,
|
|
101
|
+
description,
|
|
102
|
+
applicationCategory: 'UtilitiesApplication',
|
|
103
|
+
operatingSystem: 'Web',
|
|
104
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
105
|
+
inLanguage: 'fr',
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export const content: WebpAIcoLocaleContent = {
|
|
109
|
+
slug,
|
|
110
|
+
title,
|
|
111
|
+
description,
|
|
112
|
+
ui,
|
|
113
|
+
seo,
|
|
114
|
+
faq,
|
|
115
|
+
bibliography,
|
|
116
|
+
howTo,
|
|
117
|
+
schemas: [appSchema as any],
|
|
118
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ConvertersToolEntry, ToolLocaleContent, ToolDefinition } from '../../types';
|
|
2
|
+
import type { ImageConverterUI } from '../../shared/ImageConverter.astro';
|
|
3
|
+
import WebpAIcoCalculator from './component.astro';
|
|
4
|
+
import WebpAIcoSEO from './seo.astro';
|
|
5
|
+
import WebpAIcoBibliography from './bibliography.astro';
|
|
6
|
+
|
|
7
|
+
export type WebpAIcoLocaleContent = ToolLocaleContent<ImageConverterUI>;
|
|
8
|
+
|
|
9
|
+
export const webpAIco: ConvertersToolEntry<ImageConverterUI> = {
|
|
10
|
+
id: 'webp-a-ico',
|
|
11
|
+
icons: {
|
|
12
|
+
bg: 'mdi:file-image',
|
|
13
|
+
fg: 'mdi:file-export',
|
|
14
|
+
},
|
|
15
|
+
i18n: {
|
|
16
|
+
es: () => import('./i18n/es').then((m) => m.content),
|
|
17
|
+
en: () => import('./i18n/en').then((m) => m.content),
|
|
18
|
+
fr: () => import('./i18n/fr').then((m) => m.content),
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { WebpAIcoCalculator, WebpAIcoSEO, WebpAIcoBibliography };
|
|
23
|
+
|
|
24
|
+
export const WEBP_A_ICO_TOOL: ToolDefinition = {
|
|
25
|
+
entry: webpAIco,
|
|
26
|
+
Component: WebpAIcoCalculator,
|
|
27
|
+
SEOComponent: WebpAIcoSEO,
|
|
28
|
+
BibliographyComponent: WebpAIcoBibliography,
|
|
29
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { webpAIco } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { locale = 'es' } = Astro.props;
|
|
11
|
+
const content = await webpAIco.i18n[locale]?.();
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
{content && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { webpAJpg } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { locale = 'es' } = Astro.props;
|
|
11
|
+
const content = await webpAJpg.i18n[locale]?.();
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
{content && <SharedBibliography links={content.bibliography} title={content.ui.bibliographyTitle} />}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
import SharedImageConverter from '../../shared/ImageConverter.astro';
|
|
3
|
+
import type { ImageConverterUI } from '../../shared/ImageConverter.astro';
|
|
4
|
+
|
|
5
|
+
interface Props { ui: ImageConverterUI }
|
|
6
|
+
const { ui } = Astro.props;
|
|
7
|
+
---
|
|
8
|
+
<SharedImageConverter from="webp" to="jpg" ui={ui} />
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
3
|
+
import type { WebpAJpgLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'webp-to-jpg-converter';
|
|
6
|
+
const title = 'Convert WebP to JPG Online and Free - No Upload Required';
|
|
7
|
+
const description =
|
|
8
|
+
'Convert WebP images to JPG without uploading files. 100% private local processing. Transparent backgrounds are automatically replaced with white.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'Drag WebP files...',
|
|
12
|
+
convertText: 'To convert them to JPG instantly',
|
|
13
|
+
selectFiles: 'Select files',
|
|
14
|
+
processedFiles: 'Processed files',
|
|
15
|
+
downloadAll: 'Download All (.zip)',
|
|
16
|
+
pending: 'Pending',
|
|
17
|
+
bibliographyTitle: 'Bibliographic References',
|
|
18
|
+
faqTitle: 'Frequently Asked Questions',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: WebpAJpgLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Can I upload private images securely?',
|
|
24
|
+
answer:
|
|
25
|
+
'Yes. There is no upload server. Your browser processes the WebP on your computer and generates the JPG for you to download. Nobody else sees it.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'What happens to my WebP background if it is transparent?',
|
|
29
|
+
answer:
|
|
30
|
+
'Since JPG does not support transparency, the converter will automatically fill transparent areas with a solid white background.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Is there a limit on conversions or file size?',
|
|
34
|
+
answer:
|
|
35
|
+
'We impose no restrictions. You can convert hundreds of images as long as your computer has sufficient processing power and RAM.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: WebpAJpgLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Drag your files',
|
|
42
|
+
text: 'Drop your modern WebP files into the upload area or select them using the interactive file browser.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Local Conversion',
|
|
46
|
+
text: 'Watch as the local engine applies a background and interprets each pixel to the universal JPG format.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Get your results',
|
|
50
|
+
text: 'Download individually or use the ZIP package to consolidate all your new photographs.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: WebpAJpgLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'JPEG.org: The JPEG standards',
|
|
57
|
+
url: 'https://jpeg.org/jpeg/',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'Mozilla Developer Network - image/jpeg',
|
|
61
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#jpeg',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'WebP to JPEG compatibility',
|
|
65
|
+
url: 'https://developers.google.com/speed/webp/faq',
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
const seo: WebpAJpgLocaleContent['seo'] = [
|
|
70
|
+
{
|
|
71
|
+
type: 'title',
|
|
72
|
+
text: 'Free Online WebP to JPG Converter',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
type: 'paragraph',
|
|
76
|
+
html:
|
|
77
|
+
'WebP is Google\'s modern web image standard, but compatibility with older software and more limited devices can be problematic. Converting WebP to JPG ensures your images can be opened by virtually any program, device or platform in the world, since JPG is the most universally supported photographic format.',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: 'paragraph',
|
|
81
|
+
html:
|
|
82
|
+
'An important technical aspect to consider is transparency handling. The JPG format does not support the alpha channel, so any transparent area in the original WebP file will automatically be replaced with a solid white background during conversion. If you need to preserve transparency, consider using PNG as the target format instead.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'tip',
|
|
86
|
+
html:
|
|
87
|
+
'For best results, convert WebP to JPG when you need to share photos by email or social media where size matters. If you need transparency, use WebP to PNG instead.',
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
type: 'paragraph',
|
|
91
|
+
html:
|
|
92
|
+
'The JPG format has 100% compatibility across all browsers, operating systems and devices, while WebP may not be compatible with some older image viewers and editors.',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
type: 'paragraph',
|
|
96
|
+
html:
|
|
97
|
+
'Convert WebP to JPG locally, for free and without limits. No servers, no registration, compatible with all your devices and files.',
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
|
|
101
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
102
|
+
'@context': 'https://schema.org',
|
|
103
|
+
'@type': 'SoftwareApplication',
|
|
104
|
+
name: title,
|
|
105
|
+
description,
|
|
106
|
+
applicationCategory: 'UtilitiesApplication',
|
|
107
|
+
operatingSystem: 'Web',
|
|
108
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
109
|
+
inLanguage: 'en',
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
export const content: WebpAJpgLocaleContent = {
|
|
113
|
+
slug,
|
|
114
|
+
title,
|
|
115
|
+
description,
|
|
116
|
+
ui,
|
|
117
|
+
seo,
|
|
118
|
+
faq,
|
|
119
|
+
bibliography,
|
|
120
|
+
howTo,
|
|
121
|
+
schemas: [appSchema as any],
|
|
122
|
+
};
|