@jjlmoya/utils-converters 1.25.0 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/category/i18n/de.ts +1 -1
- package/src/category/i18n/en.ts +1 -1
- package/src/category/i18n/fr.ts +1 -1
- package/src/category/i18n/id.ts +1 -1
- package/src/category/i18n/it.ts +1 -1
- package/src/category/i18n/nl.ts +1 -1
- package/src/category/i18n/pl.ts +1 -1
- package/src/category/i18n/pt.ts +1 -1
- package/src/category/i18n/sv.ts +1 -1
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/category_seo_quality.test.ts +74 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/seo_parity.test.ts +2 -2
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/tool_validation.test.ts +15 -15
- package/src/tool/avifAJpg/i18n/en.ts +164 -164
- package/src/tool/avifAJpg/i18n/es.ts +164 -164
- package/src/tool/avifAJpg/i18n/fr.ts +164 -164
- package/src/tool/avifAJpg/i18n/ja.ts +166 -166
- package/src/tool/avifAJpg/i18n/ko.ts +166 -166
- package/src/tool/avifAJpg/i18n/zh.ts +166 -166
- package/src/tool/avifAJpg/seo.astro +15 -15
- package/src/tool/avifAPng/i18n/en.ts +164 -164
- package/src/tool/avifAPng/i18n/es.ts +164 -164
- package/src/tool/avifAPng/i18n/fr.ts +164 -164
- package/src/tool/avifAPng/i18n/ja.ts +166 -166
- package/src/tool/avifAPng/i18n/ko.ts +166 -166
- package/src/tool/avifAPng/i18n/zh.ts +166 -166
- package/src/tool/avifAPng/seo.astro +15 -15
- package/src/tool/avifAWebp/i18n/en.ts +164 -164
- package/src/tool/avifAWebp/i18n/es.ts +164 -164
- package/src/tool/avifAWebp/i18n/fr.ts +164 -164
- package/src/tool/avifAWebp/i18n/ja.ts +166 -166
- package/src/tool/avifAWebp/i18n/ko.ts +166 -166
- package/src/tool/avifAWebp/i18n/zh.ts +166 -166
- package/src/tool/avifAWebp/seo.astro +15 -15
- package/src/tool/bmpAJpg/i18n/en.ts +164 -164
- package/src/tool/bmpAJpg/i18n/es.ts +164 -164
- package/src/tool/bmpAJpg/i18n/fr.ts +164 -164
- package/src/tool/bmpAJpg/i18n/ja.ts +166 -166
- package/src/tool/bmpAJpg/i18n/ko.ts +166 -166
- package/src/tool/bmpAJpg/i18n/zh.ts +166 -166
- package/src/tool/bmpAJpg/seo.astro +15 -15
- package/src/tool/bmpAPng/i18n/en.ts +164 -164
- package/src/tool/bmpAPng/i18n/es.ts +164 -164
- package/src/tool/bmpAPng/i18n/fr.ts +164 -164
- package/src/tool/bmpAPng/i18n/ja.ts +165 -165
- package/src/tool/bmpAPng/i18n/ko.ts +165 -165
- package/src/tool/bmpAPng/i18n/zh.ts +165 -165
- package/src/tool/bmpAPng/seo.astro +15 -15
- package/src/tool/bmpAWebp/i18n/en.ts +164 -164
- package/src/tool/bmpAWebp/i18n/es.ts +164 -164
- package/src/tool/bmpAWebp/i18n/fr.ts +164 -164
- package/src/tool/bmpAWebp/i18n/ja.ts +166 -166
- package/src/tool/bmpAWebp/i18n/ko.ts +166 -166
- package/src/tool/bmpAWebp/i18n/zh.ts +166 -166
- package/src/tool/bmpAWebp/seo.astro +15 -15
- package/src/tool/gifAJpg/i18n/en.ts +164 -164
- package/src/tool/gifAJpg/i18n/es.ts +164 -164
- package/src/tool/gifAJpg/i18n/fr.ts +164 -164
- package/src/tool/gifAJpg/i18n/ja.ts +166 -166
- package/src/tool/gifAJpg/i18n/ko.ts +166 -166
- package/src/tool/gifAJpg/i18n/zh.ts +166 -166
- package/src/tool/gifAJpg/seo.astro +15 -15
- package/src/tool/gifAPng/i18n/en.ts +164 -164
- package/src/tool/gifAPng/i18n/es.ts +164 -164
- package/src/tool/gifAPng/i18n/fr.ts +164 -164
- package/src/tool/gifAPng/i18n/ja.ts +166 -166
- package/src/tool/gifAPng/i18n/ko.ts +166 -166
- package/src/tool/gifAPng/i18n/zh.ts +166 -166
- package/src/tool/gifAPng/seo.astro +15 -15
- package/src/tool/gifAWebp/i18n/en.ts +164 -164
- package/src/tool/gifAWebp/i18n/es.ts +164 -164
- package/src/tool/gifAWebp/i18n/fr.ts +164 -164
- package/src/tool/gifAWebp/i18n/ja.ts +166 -166
- package/src/tool/gifAWebp/i18n/ko.ts +166 -166
- package/src/tool/gifAWebp/i18n/zh.ts +166 -166
- package/src/tool/gifAWebp/seo.astro +15 -15
- package/src/tool/imagenBase64/i18n/en.ts +154 -154
- package/src/tool/imagenBase64/i18n/es.ts +154 -154
- package/src/tool/imagenBase64/i18n/fr.ts +154 -154
- package/src/tool/imagenBase64/seo.astro +15 -15
- package/src/tool/jpgAIco/seo.astro +15 -15
- package/src/tool/jpgAPng/i18n/en.ts +164 -164
- package/src/tool/jpgAPng/i18n/es.ts +164 -164
- package/src/tool/jpgAPng/i18n/fr.ts +164 -164
- package/src/tool/jpgAPng/i18n/ja.ts +166 -166
- package/src/tool/jpgAPng/i18n/ko.ts +166 -166
- package/src/tool/jpgAPng/i18n/zh.ts +166 -166
- package/src/tool/jpgAPng/seo.astro +15 -15
- package/src/tool/jpgAWebp/i18n/en.ts +164 -164
- package/src/tool/jpgAWebp/i18n/es.ts +164 -164
- package/src/tool/jpgAWebp/i18n/fr.ts +164 -164
- package/src/tool/jpgAWebp/seo.astro +15 -15
- package/src/tool/pngAIco/seo.astro +15 -15
- package/src/tool/pngAJpg/i18n/de.ts +21 -21
- package/src/tool/pngAJpg/i18n/es.ts +177 -177
- package/src/tool/pngAJpg/i18n/fr.ts +137 -137
- package/src/tool/pngAJpg/i18n/id.ts +89 -89
- package/src/tool/pngAJpg/i18n/it.ts +89 -89
- package/src/tool/pngAJpg/i18n/ko.ts +177 -177
- package/src/tool/pngAJpg/i18n/nl.ts +20 -20
- package/src/tool/pngAJpg/i18n/pl.ts +89 -89
- package/src/tool/pngAJpg/i18n/pt.ts +89 -89
- package/src/tool/pngAJpg/i18n/ru.ts +177 -177
- package/src/tool/pngAJpg/i18n/sv.ts +89 -89
- package/src/tool/pngAJpg/i18n/tr.ts +89 -89
- package/src/tool/pngAJpg/seo.astro +15 -15
- package/src/tool/pngAWebp/i18n/en.ts +164 -164
- package/src/tool/pngAWebp/i18n/es.ts +164 -164
- package/src/tool/pngAWebp/i18n/fr.ts +164 -164
- package/src/tool/pngAWebp/seo.astro +15 -15
- package/src/tool/svgAJpg/i18n/fr.ts +164 -164
- package/src/tool/svgAJpg/seo.astro +15 -15
- package/src/tool/svgAPng/i18n/fr.ts +164 -164
- package/src/tool/svgAPng/seo.astro +15 -15
- package/src/tool/webpAIco/seo.astro +15 -15
- package/src/tool/webpAJpg/seo.astro +15 -15
- package/src/tool/webpAPng/bibliography.ts +13 -13
- package/src/tool/webpAPng/i18n/de.ts +166 -166
- package/src/tool/webpAPng/i18n/es.ts +171 -171
- package/src/tool/webpAPng/i18n/fr.ts +166 -166
- package/src/tool/webpAPng/i18n/id.ts +166 -166
- package/src/tool/webpAPng/i18n/it.ts +166 -166
- package/src/tool/webpAPng/i18n/nl.ts +166 -166
- package/src/tool/webpAPng/i18n/pl.ts +166 -166
- package/src/tool/webpAPng/i18n/pt.ts +166 -166
- package/src/tool/webpAPng/i18n/ru.ts +166 -166
- package/src/tool/webpAPng/i18n/sv.ts +166 -166
- package/src/tool/webpAPng/i18n/tr.ts +167 -167
- package/src/tool/webpAPng/seo.astro +15 -15
|
@@ -1,168 +1,168 @@
|
|
|
1
1
|
import { bibliography } from '../bibliography';
|
|
2
|
-
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
3
3
|
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
4
|
-
import type { GifAWebpLocaleContent } from '../index';
|
|
5
|
-
|
|
6
|
-
const slug = 'gif-to-webp-converter';
|
|
7
|
-
const title = 'Convert GIF to Static WebP';
|
|
8
|
-
const description =
|
|
9
|
-
'Convert animated GIFs to static WebP. Preserves transparency. No server. Processed locally in your browser. Free.';
|
|
10
|
-
|
|
11
|
-
const ui: ImageConverterUI = {
|
|
12
|
-
dragText: 'Drag GIF files...',
|
|
13
|
-
convertText: 'To convert them to WebP instantly',
|
|
14
|
-
selectFiles: 'Select files',
|
|
15
|
-
processedFiles: 'Processed files',
|
|
16
|
-
downloadAll: 'Download All (.zip)',
|
|
4
|
+
import type { GifAWebpLocaleContent } from '../index';
|
|
5
|
+
|
|
6
|
+
const slug = 'gif-to-webp-converter';
|
|
7
|
+
const title = 'Convert GIF to Static WebP';
|
|
8
|
+
const description =
|
|
9
|
+
'Convert animated GIFs to static WebP. Preserves transparency. No server. Processed locally in your browser. Free.';
|
|
10
|
+
|
|
11
|
+
const ui: ImageConverterUI = {
|
|
12
|
+
dragText: 'Drag GIF files...',
|
|
13
|
+
convertText: 'To convert them to WebP instantly',
|
|
14
|
+
selectFiles: 'Select files',
|
|
15
|
+
processedFiles: 'Processed files',
|
|
16
|
+
downloadAll: 'Download All (.zip)',
|
|
17
17
|
pending: 'Pending',
|
|
18
|
-
bibliographyTitle: 'Bibliographic References',
|
|
19
|
-
faqTitle: 'Frequently Asked Questions',
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
const faq: GifAWebpLocaleContent['faq'] = [
|
|
23
|
-
{
|
|
24
|
-
question: 'Why freeze an animated file to modern static WebP format?',
|
|
25
|
-
answer:
|
|
26
|
-
'WebP is Google\'s compression standard; it is remarkably lightweight and retains transparency cleanly. Moving from GIF to WebP eliminates the heavy animation and achieves an abysmal gain in web speed.',
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
question: 'Will the original avatar remain transparent?',
|
|
30
|
-
answer:
|
|
31
|
-
'Yes, unlike JPEG, the WebP container respects the complex Alpha channel. All its silhouettes will remain perfect as they were natively.',
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
question: 'Where will files be uploaded to?',
|
|
35
|
-
answer:
|
|
36
|
-
'There is no upload. Processing is performed entirely by the browser\'s Javascript on your PC, with zero remote sending.',
|
|
37
|
-
},
|
|
38
|
-
];
|
|
39
|
-
|
|
40
|
-
const howTo: GifAWebpLocaleContent['howTo'] = [
|
|
41
|
-
{
|
|
42
|
-
name: 'Launch an animated avalanche',
|
|
43
|
-
text: 'Move and drop dozens of memes to the delimited zone without remote connection.',
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: 'Witness the great invisible change',
|
|
47
|
-
text: 'Watch a progressive indicator change at each millisecond as the local canvas decoder generates the output.',
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: 'Compress or save your clean resulting arsenal',
|
|
51
|
-
text: 'Take the extracted files individually or press Download Zip to package everything.',
|
|
52
|
-
},
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
const seo: GifAWebpLocaleContent['seo'] = [
|
|
56
|
-
{
|
|
57
|
-
type: 'title',
|
|
58
|
-
text: 'GIF to WebP Converter: The Modern Replacement for Heavy Animations',
|
|
59
|
-
level: 2,
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
type: 'paragraph',
|
|
63
|
-
html: 'Animated GIFs are the dinosaurs of modern web content: they consume disproportionate bandwidth, degrade the PageSpeed of any page, and are responsible for a significant percentage of total weight on thousands of websites. A typical 5 MB animated GIF can become a WebP animation under 1 MB with the same visual quality. WebP is the modern successor Google specifically designed to replace GIF on the web.',
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
type: 'title',
|
|
67
|
-
text: 'GIF vs WebP: the gap between the past and present of the web',
|
|
68
|
-
level: 3,
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
type: 'paragraph',
|
|
72
|
-
html: 'GIF is a 1987 format not originally designed for animations - that feature arrived as a later hack. Its 256-color palette, inefficient compression, and inability to handle audio make it an obsolete format. WebP, developed by Google in 2010, offers superior compression both lossy and lossless, native animation support, and full alpha channel.',
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
type: 'paragraph',
|
|
76
|
-
html: 'For a web developer, replacing GIFs with WebP on pages can mean a 10-30 point improvement in Google PageSpeed score. Less page weight means better Core Web Vitals, better SEO rankings, and lower bandwidth costs on servers. It is not just an aesthetic improvement - it is a technical architecture decision.',
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
type: 'title',
|
|
80
|
-
text: 'Architecture Comparison: Local vs Cloud',
|
|
81
|
-
level: 3,
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
type: 'comparative',
|
|
85
|
-
items: [
|
|
86
|
-
{
|
|
87
|
-
title: 'Cloud Converters',
|
|
88
|
-
description: 'Platforms that process your GIFs on remote servers.',
|
|
89
|
-
icon: 'mdi:cloud-upload',
|
|
90
|
-
pointIcon: 'mdi:close-circle-outline',
|
|
91
|
-
points: [
|
|
92
|
-
'Your animations travel over the internet to third-party servers',
|
|
93
|
-
'Waiting time due to network latency on upload and download',
|
|
94
|
-
'Size limits (large GIFs are often rejected)',
|
|
95
|
-
'Risk of file retention and analysis',
|
|
96
|
-
],
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
title: 'Our Local Architecture',
|
|
100
|
-
description: 'Direct processing on your hardware using Vanilla JS technology.',
|
|
101
|
-
icon: 'mdi:laptop-mac',
|
|
102
|
-
highlight: true,
|
|
103
|
-
points: [
|
|
104
|
-
'The GIF never leaves your device',
|
|
105
|
-
'Instant conversion with no network wait',
|
|
106
|
-
'No size limits: process GIFs of any weight',
|
|
107
|
-
'Total privacy: 0 bytes sent externally',
|
|
108
|
-
],
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
type: 'title',
|
|
114
|
-
text: 'How the local GIF to WebP conversion works',
|
|
115
|
-
level: 3,
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
type: 'paragraph',
|
|
119
|
-
html: 'The local conversion uses the HTML5 Canvas API. The GIF is loaded as a native browser Image element. By drawing it onto a canvas, the graphics engine captures the first animation frame with all its transparency information. The <code>toDataURL(\'image/webp\')</code> method exports the frame as WebP directly in RAM.',
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
type: 'paragraph',
|
|
123
|
-
html: 'WebP supports full alpha channel, so GIF transparencies are preserved in the resulting WebP without needing to add a background. WebP compression algorithms are significantly more efficient than GIF or PNG, which explains the drastic file size reduction of the final output.',
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
type: 'tip',
|
|
127
|
-
title: 'Guaranteed PageSpeed improvement',
|
|
128
|
-
html: 'A 5 MB animated GIF can become a WebP under 1 MB. If you have GIFs on your website pages, replacing them with WebP can immediately improve your Largest Contentful Paint (LCP) and Total Blocking Time (TBT), directly impacting SEO rankings.',
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
type: 'title',
|
|
132
|
-
text: 'Use cases and compatibility of the resulting WebP',
|
|
133
|
-
level: 3,
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
type: 'list',
|
|
137
|
-
icon: 'mdi:check-circle',
|
|
138
|
-
items: [
|
|
139
|
-
'Replacing GIFs on web pages to improve PageSpeed scores.',
|
|
140
|
-
'Optimized avatars and stickers for Discord, Slack and modern platforms.',
|
|
141
|
-
'Banners and visuals for digital marketing campaigns.',
|
|
142
|
-
'Animations in progressive web applications (PWA).',
|
|
143
|
-
'Compatible with Chrome, Edge, Firefox, Safari 14+ and all modern browsers.',
|
|
144
|
-
],
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
type: 'title',
|
|
148
|
-
text: 'Conclusion: migrate your GIFs to the 21st century',
|
|
149
|
-
level: 3,
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
type: 'paragraph',
|
|
153
|
-
html: 'Every GIF on your website is a missed optimization opportunity. Our tool converts GIFs to WebP instantly, privately, and without limits, directly in your browser. The result: files up to 5 times smaller, perfect transparency, and compatibility with all modern browsers.',
|
|
154
|
-
},
|
|
155
|
-
];
|
|
156
|
-
|
|
18
|
+
bibliographyTitle: 'Bibliographic References',
|
|
19
|
+
faqTitle: 'Frequently Asked Questions',
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const faq: GifAWebpLocaleContent['faq'] = [
|
|
23
|
+
{
|
|
24
|
+
question: 'Why freeze an animated file to modern static WebP format?',
|
|
25
|
+
answer:
|
|
26
|
+
'WebP is Google\'s compression standard; it is remarkably lightweight and retains transparency cleanly. Moving from GIF to WebP eliminates the heavy animation and achieves an abysmal gain in web speed.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
question: 'Will the original avatar remain transparent?',
|
|
30
|
+
answer:
|
|
31
|
+
'Yes, unlike JPEG, the WebP container respects the complex Alpha channel. All its silhouettes will remain perfect as they were natively.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: 'Where will files be uploaded to?',
|
|
35
|
+
answer:
|
|
36
|
+
'There is no upload. Processing is performed entirely by the browser\'s Javascript on your PC, with zero remote sending.',
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
const howTo: GifAWebpLocaleContent['howTo'] = [
|
|
41
|
+
{
|
|
42
|
+
name: 'Launch an animated avalanche',
|
|
43
|
+
text: 'Move and drop dozens of memes to the delimited zone without remote connection.',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'Witness the great invisible change',
|
|
47
|
+
text: 'Watch a progressive indicator change at each millisecond as the local canvas decoder generates the output.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'Compress or save your clean resulting arsenal',
|
|
51
|
+
text: 'Take the extracted files individually or press Download Zip to package everything.',
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
const seo: GifAWebpLocaleContent['seo'] = [
|
|
56
|
+
{
|
|
57
|
+
type: 'title',
|
|
58
|
+
text: 'GIF to WebP Converter: The Modern Replacement for Heavy Animations',
|
|
59
|
+
level: 2,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'paragraph',
|
|
63
|
+
html: 'Animated GIFs are the dinosaurs of modern web content: they consume disproportionate bandwidth, degrade the PageSpeed of any page, and are responsible for a significant percentage of total weight on thousands of websites. A typical 5 MB animated GIF can become a WebP animation under 1 MB with the same visual quality. WebP is the modern successor Google specifically designed to replace GIF on the web.',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
type: 'title',
|
|
67
|
+
text: 'GIF vs WebP: the gap between the past and present of the web',
|
|
68
|
+
level: 3,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: 'paragraph',
|
|
72
|
+
html: 'GIF is a 1987 format not originally designed for animations - that feature arrived as a later hack. Its 256-color palette, inefficient compression, and inability to handle audio make it an obsolete format. WebP, developed by Google in 2010, offers superior compression both lossy and lossless, native animation support, and full alpha channel.',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
type: 'paragraph',
|
|
76
|
+
html: 'For a web developer, replacing GIFs with WebP on pages can mean a 10-30 point improvement in Google PageSpeed score. Less page weight means better Core Web Vitals, better SEO rankings, and lower bandwidth costs on servers. It is not just an aesthetic improvement - it is a technical architecture decision.',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
type: 'title',
|
|
80
|
+
text: 'Architecture Comparison: Local vs Cloud',
|
|
81
|
+
level: 3,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
type: 'comparative',
|
|
85
|
+
items: [
|
|
86
|
+
{
|
|
87
|
+
title: 'Cloud Converters',
|
|
88
|
+
description: 'Platforms that process your GIFs on remote servers.',
|
|
89
|
+
icon: 'mdi:cloud-upload',
|
|
90
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
91
|
+
points: [
|
|
92
|
+
'Your animations travel over the internet to third-party servers',
|
|
93
|
+
'Waiting time due to network latency on upload and download',
|
|
94
|
+
'Size limits (large GIFs are often rejected)',
|
|
95
|
+
'Risk of file retention and analysis',
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
title: 'Our Local Architecture',
|
|
100
|
+
description: 'Direct processing on your hardware using Vanilla JS technology.',
|
|
101
|
+
icon: 'mdi:laptop-mac',
|
|
102
|
+
highlight: true,
|
|
103
|
+
points: [
|
|
104
|
+
'The GIF never leaves your device',
|
|
105
|
+
'Instant conversion with no network wait',
|
|
106
|
+
'No size limits: process GIFs of any weight',
|
|
107
|
+
'Total privacy: 0 bytes sent externally',
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: 'How the local GIF to WebP conversion works',
|
|
115
|
+
level: 3,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'paragraph',
|
|
119
|
+
html: 'The local conversion uses the HTML5 Canvas API. The GIF is loaded as a native browser Image element. By drawing it onto a canvas, the graphics engine captures the first animation frame with all its transparency information. The <code>toDataURL(\'image/webp\')</code> method exports the frame as WebP directly in RAM.',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'paragraph',
|
|
123
|
+
html: 'WebP supports full alpha channel, so GIF transparencies are preserved in the resulting WebP without needing to add a background. WebP compression algorithms are significantly more efficient than GIF or PNG, which explains the drastic file size reduction of the final output.',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
type: 'tip',
|
|
127
|
+
title: 'Guaranteed PageSpeed improvement',
|
|
128
|
+
html: 'A 5 MB animated GIF can become a WebP under 1 MB. If you have GIFs on your website pages, replacing them with WebP can immediately improve your Largest Contentful Paint (LCP) and Total Blocking Time (TBT), directly impacting SEO rankings.',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
type: 'title',
|
|
132
|
+
text: 'Use cases and compatibility of the resulting WebP',
|
|
133
|
+
level: 3,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'list',
|
|
137
|
+
icon: 'mdi:check-circle',
|
|
138
|
+
items: [
|
|
139
|
+
'Replacing GIFs on web pages to improve PageSpeed scores.',
|
|
140
|
+
'Optimized avatars and stickers for Discord, Slack and modern platforms.',
|
|
141
|
+
'Banners and visuals for digital marketing campaigns.',
|
|
142
|
+
'Animations in progressive web applications (PWA).',
|
|
143
|
+
'Compatible with Chrome, Edge, Firefox, Safari 14+ and all modern browsers.',
|
|
144
|
+
],
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'title',
|
|
148
|
+
text: 'Conclusion: migrate your GIFs to the 21st century',
|
|
149
|
+
level: 3,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'paragraph',
|
|
153
|
+
html: 'Every GIF on your website is a missed optimization opportunity. Our tool converts GIFs to WebP instantly, privately, and without limits, directly in your browser. The result: files up to 5 times smaller, perfect transparency, and compatibility with all modern browsers.',
|
|
154
|
+
},
|
|
155
|
+
];
|
|
157
156
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
157
|
+
|
|
158
|
+
export const content: GifAWebpLocaleContent = {
|
|
159
|
+
slug,
|
|
160
|
+
title,
|
|
161
|
+
description,
|
|
162
|
+
ui,
|
|
163
|
+
seo,
|
|
164
|
+
faq,
|
|
165
|
+
bibliography,
|
|
166
|
+
howTo,
|
|
167
|
+
schemas: generateSchemas({ title, description, inLanguage: 'en', faq, howTo }),
|
|
168
|
+
};
|