@jjlmoya/utils-converters 1.24.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/entries.ts +6 -0
- 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';
|
|
3
|
-
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
4
|
-
import type { AvifAWebpLocaleContent } from '../index';
|
|
5
|
-
|
|
6
|
-
const slug = 'avif-to-webp-converter';
|
|
7
|
-
const title = '在线将 AVIF 转换为 WebP';
|
|
8
|
-
const description =
|
|
9
|
-
'为了获得更好的兼容性,将 AVIF 图像转换为 WebP 格式。无需服务器,本地完成处理。免费、私密且无限制。';
|
|
10
|
-
|
|
11
|
-
const ui: ImageConverterUI = {
|
|
12
|
-
dragText: '拖拽 AVIF 文件...',
|
|
13
|
-
convertText: '立即将其转换为 WebP',
|
|
14
|
-
selectFiles: '选择文件',
|
|
15
|
-
processedFiles: '已处理文件',
|
|
16
|
-
downloadAll: '下载全部 (.zip)',
|
|
2
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
3
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
4
|
+
import type { AvifAWebpLocaleContent } from '../index';
|
|
5
|
+
|
|
6
|
+
const slug = 'avif-to-webp-converter';
|
|
7
|
+
const title = '在线将 AVIF 转换为 WebP';
|
|
8
|
+
const description =
|
|
9
|
+
'为了获得更好的兼容性,将 AVIF 图像转换为 WebP 格式。无需服务器,本地完成处理。免费、私密且无限制。';
|
|
10
|
+
|
|
11
|
+
const ui: ImageConverterUI = {
|
|
12
|
+
dragText: '拖拽 AVIF 文件...',
|
|
13
|
+
convertText: '立即将其转换为 WebP',
|
|
14
|
+
selectFiles: '选择文件',
|
|
15
|
+
processedFiles: '已处理文件',
|
|
16
|
+
downloadAll: '下载全部 (.zip)',
|
|
17
17
|
pending: '等待中',
|
|
18
|
-
bibliographyTitle: '参考文献',
|
|
19
|
-
faqTitle: '常见问题',
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
const faq: AvifAWebpLocaleContent['faq'] = [
|
|
23
|
-
{
|
|
24
|
-
question: '转换为 WebP 格式与其他格式的实际区别是什么?',
|
|
25
|
-
answer:
|
|
26
|
-
'WebP 结合了两者的优点:它能像 JPG 一样提供惊人的压缩率,同时保留像 PNG 一样处理干净透明度的能力。将 AVIF 转换为 WebP 可以在保留所有优势的同时,最大化网页兼容性。',
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
question: '如何在没有服务器的情况下实现如此快速的处理?',
|
|
30
|
-
answer:
|
|
31
|
-
'我们利用了内置的解码模块和 JavaScript HTML5 的 Image 对象,这使得可以在本地内存中读取 AVIF,并在创纪录的时间内提取出优化的 WebP 文件。',
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
question: 'WebP 格式目前是否完全兼容?',
|
|
35
|
-
answer:
|
|
36
|
-
'与尚在起步阶段的 AVIF 不同,WebP 格式在 Chrome、Firefox 和 Safari 等浏览器中获得了极广泛的支持。',
|
|
37
|
-
},
|
|
38
|
-
];
|
|
39
|
-
|
|
40
|
-
const howTo: AvifAWebpLocaleContent['howTo'] = [
|
|
41
|
-
{
|
|
42
|
-
name: '插入您的照片文件',
|
|
43
|
-
text: '将所有选定的 AVIF 格式文件拖放到我们的画布中。',
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: '字节算法转换',
|
|
47
|
-
text: '我们的引擎在不上传任何内容的情况下处理算法,并创建基于 WebP 压缩的精确副本。',
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: '收集您的下载成果',
|
|
51
|
-
text: '点击面板,接收 ZIP 压缩包或单个文件,以便直接发布。',
|
|
52
|
-
},
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
const seo: AvifAWebpLocaleContent['seo'] = [
|
|
56
|
-
{
|
|
57
|
-
type: 'title',
|
|
58
|
-
text: 'AVIF 转 WebP 转换器:现代且安全的网页替代方案',
|
|
59
|
-
level: 2,
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
type: 'paragraph',
|
|
63
|
-
html: 'AVIF 是目前最先进的图像格式:比 WebP 小,比 JPG 小,视觉质量更高。然而,它的采用情况参差不齐-Safari 直到 2024 年才支持它,许多旧的移动设备也无法识别它。相比之下,WebP 多年来作为现代网页标准已被确立,拥有超过 95% 的全球支持。当您需要现代性而又不愿承担兼容性风险时,将 AVIF 转换为 WebP 是务实的决策。',
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
type: 'title',
|
|
67
|
-
text: 'AVIF vs WebP:最新技术 vs 最安全选择',
|
|
68
|
-
level: 3,
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
type: 'paragraph',
|
|
72
|
-
html: 'AVIF 提供了目前最先进的压缩技术-在相同质量下,通常比 WebP 小 20-30%。其基于 AV1 的技术是行业内最先进的。然而,AVIF 的支持仍存在盲点:旧版本的 Safari、旧版 Android 上的某些浏览器以及某些桌面图像播放器无法识别它。对于拥有广泛且多样化受众的网页生产来说,这构成了风险。',
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
type: 'paragraph',
|
|
76
|
-
html: 'WebP 拥有更稳固的支持历史。Chrome 在 2010 年采用了它,Firefox 和 Edge 随后跟进,Safari 在 2020 年加入了支持。凭借在浏览器中超过 95% 的全球覆盖率,对于任何不想提供回退(fallback)格式的网站来说,WebP 都是安全的选择。它支持透明度、有损和无损压缩,且生成的文件远小于 JPG 或 PNG。',
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
type: 'title',
|
|
80
|
-
text: '对比:云端转换器 vs 我们的本地架构',
|
|
81
|
-
level: 3,
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
type: 'comparative',
|
|
85
|
-
items: [
|
|
86
|
-
{
|
|
87
|
-
title: '云端转换器',
|
|
88
|
-
description: '将您的 AVIF 文件上传到远程服务器进行处理的工具。',
|
|
89
|
-
icon: 'mdi:cloud-upload',
|
|
90
|
-
pointIcon: 'mdi:close-circle-outline',
|
|
91
|
-
points: [
|
|
92
|
-
'您的私密图像经过了外部服务器',
|
|
93
|
-
'网络延迟导致工作流变慢',
|
|
94
|
-
'免费转换的文件数量限制',
|
|
95
|
-
'依赖于可能发生变化的第三方服务',
|
|
96
|
-
],
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
title: '我们的本地架构',
|
|
100
|
-
description: '通过 Vanilla JS 技术和 Canvas API 在浏览器中直接处理。',
|
|
101
|
-
icon: 'mdi:laptop-mac',
|
|
102
|
-
highlight: true,
|
|
103
|
-
points: [
|
|
104
|
-
'完全隐私-0 字节离开您的设备',
|
|
105
|
-
'即时处理,不依赖网络',
|
|
106
|
-
'没有大小或文件数量限制',
|
|
107
|
-
'可在无网络连接的情况下工作',
|
|
108
|
-
],
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
type: 'title',
|
|
114
|
-
text: '技术转换在浏览器中如何运行',
|
|
115
|
-
level: 3,
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
type: 'paragraph',
|
|
119
|
-
html: 'Chrome、Firefox 和 Edge 都包含原生的 AVIF 解码器。加载文件时,浏览器的图像引擎会在内存中对其进行解码,并保留 Alpha 通道信息。图像会使用 2D 上下文绘制在不可见的 HTML5 <code>Canvas</code> 上,从而正确保留透明度。',
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
type: 'paragraph',
|
|
123
|
-
html: '导出过程通过 <code>toBlob(\'image/webp\', quality)</code> 完成。浏览器在内部应用 WebP 压缩算法,如果原始图像包含 Alpha 通道,则生成的 Blob 也会包含。此 Blob 会转换为直接下载链接。整个过程在微秒内完成,不与外部服务器进行任何通信。',
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
type: 'tip',
|
|
127
|
-
title: 'WebP:现代开发者的务实选择',
|
|
128
|
-
html: 'WebP 拥有超过 95% 的浏览器支持-AVIF 正在增长,但尚未达到这个数字。对于不具备自适应格式检测的生产站点,WebP 是覆盖几乎所有受众的安全选择。将您的 AVIF 转换为 WebP,放心地提供现代图像。',
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
type: 'title',
|
|
132
|
-
text: '使用场景:何时选择 WebP 而非 AVIF',
|
|
133
|
-
level: 3,
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
type: 'list',
|
|
137
|
-
icon: 'mdi:check-circle',
|
|
138
|
-
items: [
|
|
139
|
-
'自 2020 年起需要在浏览器中提供支持且无需 polyfill 的网站。',
|
|
140
|
-
'接受 WebP 但不支持 AVIF 的 CDN 和图像分发系统。',
|
|
141
|
-
'可能不支持 AVIF 的混合移动应用中的 WebView。',
|
|
142
|
-
'WebP 支持程度高于 AVIF 的现代 HTML 电子邮件。',
|
|
143
|
-
'已建立 WebP 图像支持的 CMS 平台和电子商务系统。',
|
|
144
|
-
],
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
type: 'title',
|
|
148
|
-
text: '结论:拥有保障兼容性的现代感',
|
|
149
|
-
level: 3,
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
type: 'paragraph',
|
|
153
|
-
html: 'AVIF 是图像压缩的前沿,但 WebP 是现代网页生态系统中可靠且通用的选择。使用我们的工具,您可以瞬间从最新格式转换为支持最广的格式-无需向服务器上传任何内容,拥有完全隐私且无大小限制。',
|
|
154
|
-
},
|
|
155
|
-
];
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
export const content: AvifAWebpLocaleContent = {
|
|
159
|
-
slug,
|
|
160
|
-
title,
|
|
161
|
-
description,
|
|
162
|
-
ui,
|
|
163
|
-
seo,
|
|
164
|
-
faq,
|
|
165
|
-
bibliography,
|
|
166
|
-
howTo,
|
|
167
|
-
schemas: generateSchemas({ title, description, inLanguage: 'zh', faq, howTo }),
|
|
168
|
-
};
|
|
18
|
+
bibliographyTitle: '参考文献',
|
|
19
|
+
faqTitle: '常见问题',
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const faq: AvifAWebpLocaleContent['faq'] = [
|
|
23
|
+
{
|
|
24
|
+
question: '转换为 WebP 格式与其他格式的实际区别是什么?',
|
|
25
|
+
answer:
|
|
26
|
+
'WebP 结合了两者的优点:它能像 JPG 一样提供惊人的压缩率,同时保留像 PNG 一样处理干净透明度的能力。将 AVIF 转换为 WebP 可以在保留所有优势的同时,最大化网页兼容性。',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
question: '如何在没有服务器的情况下实现如此快速的处理?',
|
|
30
|
+
answer:
|
|
31
|
+
'我们利用了内置的解码模块和 JavaScript HTML5 的 Image 对象,这使得可以在本地内存中读取 AVIF,并在创纪录的时间内提取出优化的 WebP 文件。',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: 'WebP 格式目前是否完全兼容?',
|
|
35
|
+
answer:
|
|
36
|
+
'与尚在起步阶段的 AVIF 不同,WebP 格式在 Chrome、Firefox 和 Safari 等浏览器中获得了极广泛的支持。',
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
const howTo: AvifAWebpLocaleContent['howTo'] = [
|
|
41
|
+
{
|
|
42
|
+
name: '插入您的照片文件',
|
|
43
|
+
text: '将所有选定的 AVIF 格式文件拖放到我们的画布中。',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: '字节算法转换',
|
|
47
|
+
text: '我们的引擎在不上传任何内容的情况下处理算法,并创建基于 WebP 压缩的精确副本。',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: '收集您的下载成果',
|
|
51
|
+
text: '点击面板,接收 ZIP 压缩包或单个文件,以便直接发布。',
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
const seo: AvifAWebpLocaleContent['seo'] = [
|
|
56
|
+
{
|
|
57
|
+
type: 'title',
|
|
58
|
+
text: 'AVIF 转 WebP 转换器:现代且安全的网页替代方案',
|
|
59
|
+
level: 2,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'paragraph',
|
|
63
|
+
html: 'AVIF 是目前最先进的图像格式:比 WebP 小,比 JPG 小,视觉质量更高。然而,它的采用情况参差不齐-Safari 直到 2024 年才支持它,许多旧的移动设备也无法识别它。相比之下,WebP 多年来作为现代网页标准已被确立,拥有超过 95% 的全球支持。当您需要现代性而又不愿承担兼容性风险时,将 AVIF 转换为 WebP 是务实的决策。',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
type: 'title',
|
|
67
|
+
text: 'AVIF vs WebP:最新技术 vs 最安全选择',
|
|
68
|
+
level: 3,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: 'paragraph',
|
|
72
|
+
html: 'AVIF 提供了目前最先进的压缩技术-在相同质量下,通常比 WebP 小 20-30%。其基于 AV1 的技术是行业内最先进的。然而,AVIF 的支持仍存在盲点:旧版本的 Safari、旧版 Android 上的某些浏览器以及某些桌面图像播放器无法识别它。对于拥有广泛且多样化受众的网页生产来说,这构成了风险。',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
type: 'paragraph',
|
|
76
|
+
html: 'WebP 拥有更稳固的支持历史。Chrome 在 2010 年采用了它,Firefox 和 Edge 随后跟进,Safari 在 2020 年加入了支持。凭借在浏览器中超过 95% 的全球覆盖率,对于任何不想提供回退(fallback)格式的网站来说,WebP 都是安全的选择。它支持透明度、有损和无损压缩,且生成的文件远小于 JPG 或 PNG。',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
type: 'title',
|
|
80
|
+
text: '对比:云端转换器 vs 我们的本地架构',
|
|
81
|
+
level: 3,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
type: 'comparative',
|
|
85
|
+
items: [
|
|
86
|
+
{
|
|
87
|
+
title: '云端转换器',
|
|
88
|
+
description: '将您的 AVIF 文件上传到远程服务器进行处理的工具。',
|
|
89
|
+
icon: 'mdi:cloud-upload',
|
|
90
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
91
|
+
points: [
|
|
92
|
+
'您的私密图像经过了外部服务器',
|
|
93
|
+
'网络延迟导致工作流变慢',
|
|
94
|
+
'免费转换的文件数量限制',
|
|
95
|
+
'依赖于可能发生变化的第三方服务',
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
title: '我们的本地架构',
|
|
100
|
+
description: '通过 Vanilla JS 技术和 Canvas API 在浏览器中直接处理。',
|
|
101
|
+
icon: 'mdi:laptop-mac',
|
|
102
|
+
highlight: true,
|
|
103
|
+
points: [
|
|
104
|
+
'完全隐私-0 字节离开您的设备',
|
|
105
|
+
'即时处理,不依赖网络',
|
|
106
|
+
'没有大小或文件数量限制',
|
|
107
|
+
'可在无网络连接的情况下工作',
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: '技术转换在浏览器中如何运行',
|
|
115
|
+
level: 3,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'paragraph',
|
|
119
|
+
html: 'Chrome、Firefox 和 Edge 都包含原生的 AVIF 解码器。加载文件时,浏览器的图像引擎会在内存中对其进行解码,并保留 Alpha 通道信息。图像会使用 2D 上下文绘制在不可见的 HTML5 <code>Canvas</code> 上,从而正确保留透明度。',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'paragraph',
|
|
123
|
+
html: '导出过程通过 <code>toBlob(\'image/webp\', quality)</code> 完成。浏览器在内部应用 WebP 压缩算法,如果原始图像包含 Alpha 通道,则生成的 Blob 也会包含。此 Blob 会转换为直接下载链接。整个过程在微秒内完成,不与外部服务器进行任何通信。',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
type: 'tip',
|
|
127
|
+
title: 'WebP:现代开发者的务实选择',
|
|
128
|
+
html: 'WebP 拥有超过 95% 的浏览器支持-AVIF 正在增长,但尚未达到这个数字。对于不具备自适应格式检测的生产站点,WebP 是覆盖几乎所有受众的安全选择。将您的 AVIF 转换为 WebP,放心地提供现代图像。',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
type: 'title',
|
|
132
|
+
text: '使用场景:何时选择 WebP 而非 AVIF',
|
|
133
|
+
level: 3,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'list',
|
|
137
|
+
icon: 'mdi:check-circle',
|
|
138
|
+
items: [
|
|
139
|
+
'自 2020 年起需要在浏览器中提供支持且无需 polyfill 的网站。',
|
|
140
|
+
'接受 WebP 但不支持 AVIF 的 CDN 和图像分发系统。',
|
|
141
|
+
'可能不支持 AVIF 的混合移动应用中的 WebView。',
|
|
142
|
+
'WebP 支持程度高于 AVIF 的现代 HTML 电子邮件。',
|
|
143
|
+
'已建立 WebP 图像支持的 CMS 平台和电子商务系统。',
|
|
144
|
+
],
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'title',
|
|
148
|
+
text: '结论:拥有保障兼容性的现代感',
|
|
149
|
+
level: 3,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'paragraph',
|
|
153
|
+
html: 'AVIF 是图像压缩的前沿,但 WebP 是现代网页生态系统中可靠且通用的选择。使用我们的工具,您可以瞬间从最新格式转换为支持最广的格式-无需向服务器上传任何内容,拥有完全隐私且无大小限制。',
|
|
154
|
+
},
|
|
155
|
+
];
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
export const content: AvifAWebpLocaleContent = {
|
|
159
|
+
slug,
|
|
160
|
+
title,
|
|
161
|
+
description,
|
|
162
|
+
ui,
|
|
163
|
+
seo,
|
|
164
|
+
faq,
|
|
165
|
+
bibliography,
|
|
166
|
+
howTo,
|
|
167
|
+
schemas: generateSchemas({ title, description, inLanguage: 'zh', faq, howTo }),
|
|
168
|
+
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
---
|
|
2
|
-
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
-
import { avifAWebp } 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 avifAWebp.i18n[locale]?.();
|
|
12
|
-
if (!content) return null;
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { avifAWebp } 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 avifAWebp.i18n[locale]?.();
|
|
12
|
+
if (!content) return null;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|