@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';
|
|
3
|
-
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
4
|
-
import type { JpgAPngLocaleContent } from '../index';
|
|
5
|
-
|
|
6
|
-
const slug = 'jpg-to-png-converter';
|
|
7
|
-
const title = '在线免费将 JPG 转换为 PNG';
|
|
8
|
-
const description =
|
|
9
|
-
'在您的浏览器中完成 JPG 到 PNG 的转换,无需上传文件。无损转换、免费且完全私密。';
|
|
10
|
-
|
|
11
|
-
const ui: ImageConverterUI = {
|
|
12
|
-
dragText: '拖拽 JPG 文件...',
|
|
13
|
-
convertText: '立即将其转换为 PNG',
|
|
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 { JpgAPngLocaleContent } from '../index';
|
|
5
|
+
|
|
6
|
+
const slug = 'jpg-to-png-converter';
|
|
7
|
+
const title = '在线免费将 JPG 转换为 PNG';
|
|
8
|
+
const description =
|
|
9
|
+
'在您的浏览器中完成 JPG 到 PNG 的转换,无需上传文件。无损转换、免费且完全私密。';
|
|
10
|
+
|
|
11
|
+
const ui: ImageConverterUI = {
|
|
12
|
+
dragText: '拖拽 JPG 文件...',
|
|
13
|
+
convertText: '立即将其转换为 PNG',
|
|
14
|
+
selectFiles: '选择文件',
|
|
15
|
+
processedFiles: '已处理文件',
|
|
16
|
+
downloadAll: '下载全部 (.zip)',
|
|
17
17
|
pending: '等待中',
|
|
18
|
-
bibliographyTitle: '参考文献',
|
|
19
|
-
faqTitle: '常见问题',
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
const faq: JpgAPngLocaleContent['faq'] = [
|
|
23
|
-
{
|
|
24
|
-
question: '我什么时候应该将 JPG 转换为 PNG?',
|
|
25
|
-
answer:
|
|
26
|
-
'每当您需要编辑照片中的文字或徽标(logo)时。如果您多次保存 JPG,图像质量会变差。而 PNG 会\"冻结\"压缩,保持质量不变。',
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
question: 'PNG 文件会立即具有透明背景吗?',
|
|
30
|
-
answer:
|
|
31
|
-
'不会。原始 JPG 是扁平的,没有透明通道。生成的 PNG 会准备好这个容器,然后您需要使用 Photoshop 或其他编辑器来隔离并移除背景。',
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
question: '这个网站有流量限制吗?',
|
|
35
|
-
answer:
|
|
36
|
-
'由于使用了无云端依赖的 Edge 技术,您的转换大小不受任何限制,因为它完全利用您的电脑或移动终端完成处理。',
|
|
37
|
-
},
|
|
38
|
-
];
|
|
39
|
-
|
|
40
|
-
const howTo: JpgAPngLocaleContent['howTo'] = [
|
|
41
|
-
{
|
|
42
|
-
name: '将 JPG 拖入面板',
|
|
43
|
-
text: '使用鼠标或文件选择器上传 JPG 格式的静态图像。',
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: '无损执行',
|
|
47
|
-
text: 'Vanilla 软件将图像位信息推入 PNG 家族特有的无损包装容器中。',
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: '结束会话',
|
|
51
|
-
text: '点击面板,您的浏览器会将下载的网页资产保存到您的用户文件夹中。',
|
|
52
|
-
},
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
const seo: JpgAPngLocaleContent['seo'] = [
|
|
56
|
-
{
|
|
57
|
-
type: 'title',
|
|
58
|
-
text: 'JPG 转 PNG 转换器:无损编辑与透明度支持',
|
|
59
|
-
level: 2,
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
type: 'paragraph',
|
|
63
|
-
html: '<strong>JPG</strong> 对于相机拍摄的照片来说是无可比拟的,但它有一个致命弱点:每次保存文件时,它都会重新应用有损压缩,导致边缘和渐变逐渐降级。而 <strong>PNG</strong> 使用无损压缩-一旦保存,像素就是不可更改的。当您需要准备图像进行深度编辑、添加透明背景,或将其集成到需要多次保存的设计流程中时,将 JPG 转换为 PNG 就是关键操作。',
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
type: 'title',
|
|
67
|
-
text: 'JPG 还是 PNG?何时使用每种格式',
|
|
68
|
-
level: 3,
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
type: 'paragraph',
|
|
72
|
-
html: '<strong>JPG</strong> 是摄影之王:体积小,兼容性极佳。但在每次编辑和重新保存时,其压缩伪影(artifacts)会不断累积。如果您需要反复裁剪、修饰或向图像添加文字,从 JPG 开始意味着在每个周期中都会引入质量退化。此外,JPG 缺乏 Alpha 通道:它无法拥有透明背景,这使其在徽标、图标和 UI 元素中处于劣势。',
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
type: 'paragraph',
|
|
76
|
-
html: '<strong>PNG</strong> 是公司徽标、文字清晰的截图、界面元素、后期需要抠图的白底产品图,或任何需要多次编辑的图形资源的正确选择。无损压缩保证了文字边缘保持完美的清晰度,纯色区域保持纯净,没有 JPEG 噪点。',
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
type: 'title',
|
|
80
|
-
text: '对比:本地转换 vs 云端转换',
|
|
81
|
-
level: 3,
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
type: 'comparative',
|
|
85
|
-
items: [
|
|
86
|
-
{
|
|
87
|
-
title: '云端转换器',
|
|
88
|
-
description: '将您的文件上传到远程服务器进行处理的工具。',
|
|
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 技术在您的硬件上直接处理。',
|
|
101
|
-
icon: 'mdi:laptop-mac',
|
|
102
|
-
highlight: true,
|
|
103
|
-
points: [
|
|
104
|
-
'即时处理-零网络延迟',
|
|
105
|
-
'完全隐私-0 字节向外传输',
|
|
106
|
-
'没有 MB 大小或文件数量限制',
|
|
107
|
-
'界面干净,无广告或追踪',
|
|
108
|
-
],
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
type: 'title',
|
|
114
|
-
text: '技术原理是如何运作的',
|
|
115
|
-
level: 3,
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
type: 'paragraph',
|
|
119
|
-
html: '处理过程完全是本地的:浏览器根据选定的 JPG 创建一个 <strong>Blob</strong>,并将其绘制在内存中的 <strong>HTML5 Canvas</strong> 上。渲染完成后,调用 <code>toDataURL(\'image/png\')</code>-浏览器内置的 PNG 编解码器会重新编码每个像素,而不应用任何新的有损压缩。结果是一个忠实保留 JPG 当前状态的 PNG:质量既没有变好也没有变坏,只是被\"冻结\"了。',
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
type: 'paragraph',
|
|
123
|
-
html: '生成的 PNG 将使用 DEFLATE 无损压缩,这与 Photoshop 或 GIMP 等专业工具所使用的技术相同。由于它存储了所有像素且不丢弃信息,因此其体积将比原始 JPG 更大-通常在 2 到 5 倍之间。这是为了忠实度和无限可编辑性所付出的代价。',
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
type: 'tip',
|
|
127
|
-
title: '重要提示:PNG 不会恢复 JPEG 的质量',
|
|
128
|
-
html: '将 JPG 转换为 PNG <strong>不会恢复</strong>在原始 JPEG 压缩过程中损失的质量。如果您的 JPG 已经存在模糊块(block artifacts)或色彩噪点,PNG 会完好地保留它们-它只是防止了进一步压缩带来的损失。您可以将转换视为对图像当前状态的\"冻结\",以便未来的编辑不会进一步降低其质量。',
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
type: 'title',
|
|
132
|
-
text: '使用场景与兼容性',
|
|
133
|
-
level: 3,
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
type: 'list',
|
|
137
|
-
icon: 'mdi:check-circle',
|
|
138
|
-
items: [
|
|
139
|
-
'抠图后需要透明背景的徽标和品牌元素。',
|
|
140
|
-
'带有文字且需要多次编辑和重新保存的截图。',
|
|
141
|
-
'需要干净、可抠图白底的电商产品图。',
|
|
142
|
-
'用于 PowerPoint 或 Google Slides 演示文稿的图形资源。',
|
|
143
|
-
'边缘清晰度至关重要的网页和移动应用的 UI 资产。',
|
|
144
|
-
],
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
type: 'title',
|
|
148
|
-
text: '结论',
|
|
149
|
-
level: 3,
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
type: 'paragraph',
|
|
153
|
-
html: '将 JPG 转换为 PNG 是任何严肃设计流程的第一步。它不会改变原始质量,但会保护每个像素不受未来编辑的影响。使用此工具,转换过程瞬间完成且完全私密,您的企业或个人图像绝不会离开您的设备。',
|
|
154
|
-
},
|
|
155
|
-
];
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
export const content: JpgAPngLocaleContent = {
|
|
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: JpgAPngLocaleContent['faq'] = [
|
|
23
|
+
{
|
|
24
|
+
question: '我什么时候应该将 JPG 转换为 PNG?',
|
|
25
|
+
answer:
|
|
26
|
+
'每当您需要编辑照片中的文字或徽标(logo)时。如果您多次保存 JPG,图像质量会变差。而 PNG 会\"冻结\"压缩,保持质量不变。',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
question: 'PNG 文件会立即具有透明背景吗?',
|
|
30
|
+
answer:
|
|
31
|
+
'不会。原始 JPG 是扁平的,没有透明通道。生成的 PNG 会准备好这个容器,然后您需要使用 Photoshop 或其他编辑器来隔离并移除背景。',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: '这个网站有流量限制吗?',
|
|
35
|
+
answer:
|
|
36
|
+
'由于使用了无云端依赖的 Edge 技术,您的转换大小不受任何限制,因为它完全利用您的电脑或移动终端完成处理。',
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
const howTo: JpgAPngLocaleContent['howTo'] = [
|
|
41
|
+
{
|
|
42
|
+
name: '将 JPG 拖入面板',
|
|
43
|
+
text: '使用鼠标或文件选择器上传 JPG 格式的静态图像。',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: '无损执行',
|
|
47
|
+
text: 'Vanilla 软件将图像位信息推入 PNG 家族特有的无损包装容器中。',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: '结束会话',
|
|
51
|
+
text: '点击面板,您的浏览器会将下载的网页资产保存到您的用户文件夹中。',
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
const seo: JpgAPngLocaleContent['seo'] = [
|
|
56
|
+
{
|
|
57
|
+
type: 'title',
|
|
58
|
+
text: 'JPG 转 PNG 转换器:无损编辑与透明度支持',
|
|
59
|
+
level: 2,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'paragraph',
|
|
63
|
+
html: '<strong>JPG</strong> 对于相机拍摄的照片来说是无可比拟的,但它有一个致命弱点:每次保存文件时,它都会重新应用有损压缩,导致边缘和渐变逐渐降级。而 <strong>PNG</strong> 使用无损压缩-一旦保存,像素就是不可更改的。当您需要准备图像进行深度编辑、添加透明背景,或将其集成到需要多次保存的设计流程中时,将 JPG 转换为 PNG 就是关键操作。',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
type: 'title',
|
|
67
|
+
text: 'JPG 还是 PNG?何时使用每种格式',
|
|
68
|
+
level: 3,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: 'paragraph',
|
|
72
|
+
html: '<strong>JPG</strong> 是摄影之王:体积小,兼容性极佳。但在每次编辑和重新保存时,其压缩伪影(artifacts)会不断累积。如果您需要反复裁剪、修饰或向图像添加文字,从 JPG 开始意味着在每个周期中都会引入质量退化。此外,JPG 缺乏 Alpha 通道:它无法拥有透明背景,这使其在徽标、图标和 UI 元素中处于劣势。',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
type: 'paragraph',
|
|
76
|
+
html: '<strong>PNG</strong> 是公司徽标、文字清晰的截图、界面元素、后期需要抠图的白底产品图,或任何需要多次编辑的图形资源的正确选择。无损压缩保证了文字边缘保持完美的清晰度,纯色区域保持纯净,没有 JPEG 噪点。',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
type: 'title',
|
|
80
|
+
text: '对比:本地转换 vs 云端转换',
|
|
81
|
+
level: 3,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
type: 'comparative',
|
|
85
|
+
items: [
|
|
86
|
+
{
|
|
87
|
+
title: '云端转换器',
|
|
88
|
+
description: '将您的文件上传到远程服务器进行处理的工具。',
|
|
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 技术在您的硬件上直接处理。',
|
|
101
|
+
icon: 'mdi:laptop-mac',
|
|
102
|
+
highlight: true,
|
|
103
|
+
points: [
|
|
104
|
+
'即时处理-零网络延迟',
|
|
105
|
+
'完全隐私-0 字节向外传输',
|
|
106
|
+
'没有 MB 大小或文件数量限制',
|
|
107
|
+
'界面干净,无广告或追踪',
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: '技术原理是如何运作的',
|
|
115
|
+
level: 3,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'paragraph',
|
|
119
|
+
html: '处理过程完全是本地的:浏览器根据选定的 JPG 创建一个 <strong>Blob</strong>,并将其绘制在内存中的 <strong>HTML5 Canvas</strong> 上。渲染完成后,调用 <code>toDataURL(\'image/png\')</code>-浏览器内置的 PNG 编解码器会重新编码每个像素,而不应用任何新的有损压缩。结果是一个忠实保留 JPG 当前状态的 PNG:质量既没有变好也没有变坏,只是被\"冻结\"了。',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'paragraph',
|
|
123
|
+
html: '生成的 PNG 将使用 DEFLATE 无损压缩,这与 Photoshop 或 GIMP 等专业工具所使用的技术相同。由于它存储了所有像素且不丢弃信息,因此其体积将比原始 JPG 更大-通常在 2 到 5 倍之间。这是为了忠实度和无限可编辑性所付出的代价。',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
type: 'tip',
|
|
127
|
+
title: '重要提示:PNG 不会恢复 JPEG 的质量',
|
|
128
|
+
html: '将 JPG 转换为 PNG <strong>不会恢复</strong>在原始 JPEG 压缩过程中损失的质量。如果您的 JPG 已经存在模糊块(block artifacts)或色彩噪点,PNG 会完好地保留它们-它只是防止了进一步压缩带来的损失。您可以将转换视为对图像当前状态的\"冻结\",以便未来的编辑不会进一步降低其质量。',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
type: 'title',
|
|
132
|
+
text: '使用场景与兼容性',
|
|
133
|
+
level: 3,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'list',
|
|
137
|
+
icon: 'mdi:check-circle',
|
|
138
|
+
items: [
|
|
139
|
+
'抠图后需要透明背景的徽标和品牌元素。',
|
|
140
|
+
'带有文字且需要多次编辑和重新保存的截图。',
|
|
141
|
+
'需要干净、可抠图白底的电商产品图。',
|
|
142
|
+
'用于 PowerPoint 或 Google Slides 演示文稿的图形资源。',
|
|
143
|
+
'边缘清晰度至关重要的网页和移动应用的 UI 资产。',
|
|
144
|
+
],
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'title',
|
|
148
|
+
text: '结论',
|
|
149
|
+
level: 3,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'paragraph',
|
|
153
|
+
html: '将 JPG 转换为 PNG 是任何严肃设计流程的第一步。它不会改变原始质量,但会保护每个像素不受未来编辑的影响。使用此工具,转换过程瞬间完成且完全私密,您的企业或个人图像绝不会离开您的设备。',
|
|
154
|
+
},
|
|
155
|
+
];
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
export const content: JpgAPngLocaleContent = {
|
|
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 { jpgAPng } 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 jpgAPng.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 { jpgAPng } 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 jpgAPng.i18n[locale]?.();
|
|
12
|
+
if (!content) return null;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|