@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,167 +1,167 @@
|
|
|
1
1
|
import { bibliography } from '../bibliography';
|
|
2
|
-
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
3
|
-
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
4
|
-
import type { BmpAPngLocaleContent } from '../index';
|
|
5
|
-
|
|
6
|
-
const slug = 'bmp-to-png-converter';
|
|
7
|
-
const title = 'BMP 转 PNG 转换器';
|
|
8
|
-
const description =
|
|
9
|
-
'无损地将 BMP 图像转换为 PNG。现代压缩技术,无伪影。无需上传文件。免费且 100% 私密。';
|
|
10
|
-
|
|
11
|
-
const ui: ImageConverterUI = {
|
|
12
|
-
dragText: '拖拽 BMP 文件...',
|
|
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 { BmpAPngLocaleContent } from '../index';
|
|
5
|
+
|
|
6
|
+
const slug = 'bmp-to-png-converter';
|
|
7
|
+
const title = 'BMP 转 PNG 转换器';
|
|
8
|
+
const description =
|
|
9
|
+
'无损地将 BMP 图像转换为 PNG。现代压缩技术,无伪影。无需上传文件。免费且 100% 私密。';
|
|
10
|
+
|
|
11
|
+
const ui: ImageConverterUI = {
|
|
12
|
+
dragText: '拖拽 BMP 文件...',
|
|
13
|
+
convertText: '立即将其转换为 PNG',
|
|
14
|
+
selectFiles: '选择文件',
|
|
15
|
+
processedFiles: '已处理文件',
|
|
16
|
+
downloadAll: '下载全部 (.zip)',
|
|
17
17
|
pending: '等待中',
|
|
18
|
-
bibliographyTitle: '参考文献',
|
|
19
|
-
faqTitle: '常见问题',
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
const faq: BmpAPngLocaleContent['faq'] = [
|
|
23
|
-
{
|
|
24
|
-
question: 'BMP 和 PNG 之间的主要区别是什么?',
|
|
25
|
-
answer:
|
|
26
|
-
'BMP 和 PNG 都是无损格式。区别在于优化:PNG 能够通过现代压缩算法在保持相同图像质量的同时,占用的内存比 BMP 少 5 到 10 倍。',
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
question: '转换过程真的是私密的吗?',
|
|
30
|
-
answer:
|
|
31
|
-
'是的。所有的图像处理都在您的电脑上完成。在本地处理过程中,绝对没有任何人能访问您的文件。',
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
question: '在这种情况下,为什么选择 PNG 而不是 JPEG?',
|
|
35
|
-
answer:
|
|
36
|
-
'如果您拥有 BMP 文件,通常是因为该图像具有精确的色彩。将 BMP 转换为有损的 JPG 标准会破坏您的纯正色彩,而 PNG 则能完美保护这种色彩忠实度。',
|
|
37
|
-
},
|
|
38
|
-
];
|
|
39
|
-
|
|
40
|
-
const howTo: BmpAPngLocaleContent['howTo'] = [
|
|
41
|
-
{
|
|
42
|
-
name: '载入您的照片',
|
|
43
|
-
text: '放心将 BMP 源文件拖入我们的网页元素投放区域。',
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: '无需网络传输的转换',
|
|
47
|
-
text: '只需一秒钟即可体验由您的 HTML5 JS 在本地完成的纯净处理。',
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: '获取纯正的 PNG',
|
|
51
|
-
text: '可以单独下载 PNG 副本,或通过压缩包一次性下载。',
|
|
52
|
-
},
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
const seo: BmpAPngLocaleContent['seo'] = [
|
|
56
|
-
{
|
|
57
|
-
type: 'title',
|
|
58
|
-
text: 'BMP 转 PNG 转换器:替代 BMP 格式的无损之选',
|
|
59
|
-
level: 2,
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
type: 'paragraph',
|
|
63
|
-
html: 'BMP 是一种非压缩格式,与 PNG 相比没有任何技术优势,却占用大量空间。两者都是无损格式:它们能以绝对精度保存每个像素。但 PNG 通过 Deflate 算法增加了无损压缩,在不牺牲任何视觉信息位的情况下,将文件大小减少 3 到 5 倍。从本质上讲,PNG 正是 BMP 一直想要成为的样子。',
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
type: 'title',
|
|
67
|
-
text: 'BMP vs PNG:相同质量,完全不同的体积',
|
|
68
|
-
level: 3,
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
type: 'paragraph',
|
|
72
|
-
html: 'BMP 和 PNG 之间的根本区别不在于图像质量(两者都是无损的),而在于存储效率。BMP 原始地存储像素:无压缩、无优化、不考虑空间占用。而 PNG 会分析重复的像素模式,并使用与 ZIP 相同的 Deflate 算法进行紧凑编码。',
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
type: 'paragraph',
|
|
76
|
-
html: '除了优越的压缩性能外,PNG 还增加了 BMP 从未具备的功能:支持透明度的完整 Alpha 通道。屏幕截图、界面图形、徽标、技术图表:所有这些类型的图像都能从 PNG 转换中获益匪浅,在保持每个精确颜色值的同时,将文件重量降至原始大小的一小部分。',
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
type: 'title',
|
|
80
|
-
text: '架构对比:本地 vs 云端',
|
|
81
|
-
level: 3,
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
type: 'comparative',
|
|
85
|
-
items: [
|
|
86
|
-
{
|
|
87
|
-
title: '云端转换器',
|
|
88
|
-
description: '在第三方服务器上处理您的 BMP 文件的服务。',
|
|
89
|
-
icon: 'mdi:cloud-upload',
|
|
90
|
-
pointIcon: 'mdi:close-circle-outline',
|
|
91
|
-
points: [
|
|
92
|
-
'您的工作图像在互联网上传输',
|
|
93
|
-
'等待时间与 BMP 的大小成正比',
|
|
94
|
-
'免费方案中的体积限制',
|
|
95
|
-
'文件被分析或留存的风险',
|
|
96
|
-
],
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
title: '我们的本地架构',
|
|
100
|
-
description: '通过 Vanilla JS 技术在您的硬件上直接处理。',
|
|
101
|
-
icon: 'mdi:laptop-mac',
|
|
102
|
-
highlight: true,
|
|
103
|
-
points: [
|
|
104
|
-
'BMP 在本地处理,绝不离开您的设备',
|
|
105
|
-
'毫秒级的即时转换',
|
|
106
|
-
'没有体积或文件数量限制',
|
|
107
|
-
'完全隐私:0 字节向外传输',
|
|
108
|
-
],
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
type: 'title',
|
|
114
|
-
text: '本地 BMP 转 PNG 的工作原理',
|
|
115
|
-
level: 3,
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
type: 'paragraph',
|
|
119
|
-
html: '该过程利用了 HTML5 的 Canvas API。BMP 文件通过浏览器的 <code>FileReader</code> API 读取并解码为内存中的 Blob。该 Blob 被绘制在不可见的 HTML5 画布上。接着,<code>toDataURL(\'image/png\')</code> 方法应用浏览器原生的 PNG 压缩算法并生成结果文件。',
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
type: 'paragraph',
|
|
123
|
-
html: '与转换为 JPG 不同,转换为 PNG 是完全无损的:原始 BMP 的每个颜色值都会在生成的 PNG 中得到精确保留。没有伪影,没有边缘模糊,没有信息丢失。最终文件在视觉上与 BMP 完全相同,但占用的磁盘空间减少了 3 到 5 倍。',
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
type: 'paragraph',
|
|
127
|
-
html: '如果您使用的是导出 BMP 的旧软件(工业设备、控制系统、医疗诊断软件),转换为 PNG 是最佳决策。PNG 与几乎所有现代程序兼容,保持完美的色彩忠诚度,且空间占用减少高达 5 倍。这是最简单、最安全的迁移方式。',
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
type: 'title',
|
|
131
|
-
text: '生成 PNG 的应用场景与兼容性',
|
|
132
|
-
level: 3,
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
type: 'list',
|
|
136
|
-
icon: 'mdi:check-circle',
|
|
137
|
-
items: [
|
|
138
|
-
'完美保留精确颜色的屏幕截图和界面图形。',
|
|
139
|
-
'技术文档图像和软件图表。',
|
|
140
|
-
'CAD 导出、工业系统和老旧软件产出物。',
|
|
141
|
-
'增加了透明度的徽标和视觉识别元素。',
|
|
142
|
-
'兼容 Adobe Photoshop、GIMP、Figma 和所有现代编辑器。',
|
|
143
|
-
],
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
type: 'title',
|
|
147
|
-
text: '结论:PNG 是 BMP 的理想进化形式',
|
|
148
|
-
level: 3,
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
type: 'paragraph',
|
|
152
|
-
html: '将 BMP 转换为 PNG 是图像文件最自然的现代化方式:相同的无损质量、更强的兼容性、支持透明度且体积轻巧 3 到 5 倍。我们的工具在您的浏览器中直接完成此项转换,无需上传任何文件到服务器。',
|
|
153
|
-
},
|
|
154
|
-
];
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
export const content: BmpAPngLocaleContent = {
|
|
158
|
-
slug,
|
|
159
|
-
title,
|
|
160
|
-
description,
|
|
161
|
-
ui,
|
|
162
|
-
seo,
|
|
163
|
-
faq,
|
|
164
|
-
bibliography,
|
|
165
|
-
howTo,
|
|
166
|
-
schemas: generateSchemas({ title, description, inLanguage: 'zh', faq, howTo }),
|
|
167
|
-
};
|
|
18
|
+
bibliographyTitle: '参考文献',
|
|
19
|
+
faqTitle: '常见问题',
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const faq: BmpAPngLocaleContent['faq'] = [
|
|
23
|
+
{
|
|
24
|
+
question: 'BMP 和 PNG 之间的主要区别是什么?',
|
|
25
|
+
answer:
|
|
26
|
+
'BMP 和 PNG 都是无损格式。区别在于优化:PNG 能够通过现代压缩算法在保持相同图像质量的同时,占用的内存比 BMP 少 5 到 10 倍。',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
question: '转换过程真的是私密的吗?',
|
|
30
|
+
answer:
|
|
31
|
+
'是的。所有的图像处理都在您的电脑上完成。在本地处理过程中,绝对没有任何人能访问您的文件。',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: '在这种情况下,为什么选择 PNG 而不是 JPEG?',
|
|
35
|
+
answer:
|
|
36
|
+
'如果您拥有 BMP 文件,通常是因为该图像具有精确的色彩。将 BMP 转换为有损的 JPG 标准会破坏您的纯正色彩,而 PNG 则能完美保护这种色彩忠实度。',
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
const howTo: BmpAPngLocaleContent['howTo'] = [
|
|
41
|
+
{
|
|
42
|
+
name: '载入您的照片',
|
|
43
|
+
text: '放心将 BMP 源文件拖入我们的网页元素投放区域。',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: '无需网络传输的转换',
|
|
47
|
+
text: '只需一秒钟即可体验由您的 HTML5 JS 在本地完成的纯净处理。',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: '获取纯正的 PNG',
|
|
51
|
+
text: '可以单独下载 PNG 副本,或通过压缩包一次性下载。',
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
const seo: BmpAPngLocaleContent['seo'] = [
|
|
56
|
+
{
|
|
57
|
+
type: 'title',
|
|
58
|
+
text: 'BMP 转 PNG 转换器:替代 BMP 格式的无损之选',
|
|
59
|
+
level: 2,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'paragraph',
|
|
63
|
+
html: 'BMP 是一种非压缩格式,与 PNG 相比没有任何技术优势,却占用大量空间。两者都是无损格式:它们能以绝对精度保存每个像素。但 PNG 通过 Deflate 算法增加了无损压缩,在不牺牲任何视觉信息位的情况下,将文件大小减少 3 到 5 倍。从本质上讲,PNG 正是 BMP 一直想要成为的样子。',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
type: 'title',
|
|
67
|
+
text: 'BMP vs PNG:相同质量,完全不同的体积',
|
|
68
|
+
level: 3,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: 'paragraph',
|
|
72
|
+
html: 'BMP 和 PNG 之间的根本区别不在于图像质量(两者都是无损的),而在于存储效率。BMP 原始地存储像素:无压缩、无优化、不考虑空间占用。而 PNG 会分析重复的像素模式,并使用与 ZIP 相同的 Deflate 算法进行紧凑编码。',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
type: 'paragraph',
|
|
76
|
+
html: '除了优越的压缩性能外,PNG 还增加了 BMP 从未具备的功能:支持透明度的完整 Alpha 通道。屏幕截图、界面图形、徽标、技术图表:所有这些类型的图像都能从 PNG 转换中获益匪浅,在保持每个精确颜色值的同时,将文件重量降至原始大小的一小部分。',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
type: 'title',
|
|
80
|
+
text: '架构对比:本地 vs 云端',
|
|
81
|
+
level: 3,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
type: 'comparative',
|
|
85
|
+
items: [
|
|
86
|
+
{
|
|
87
|
+
title: '云端转换器',
|
|
88
|
+
description: '在第三方服务器上处理您的 BMP 文件的服务。',
|
|
89
|
+
icon: 'mdi:cloud-upload',
|
|
90
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
91
|
+
points: [
|
|
92
|
+
'您的工作图像在互联网上传输',
|
|
93
|
+
'等待时间与 BMP 的大小成正比',
|
|
94
|
+
'免费方案中的体积限制',
|
|
95
|
+
'文件被分析或留存的风险',
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
title: '我们的本地架构',
|
|
100
|
+
description: '通过 Vanilla JS 技术在您的硬件上直接处理。',
|
|
101
|
+
icon: 'mdi:laptop-mac',
|
|
102
|
+
highlight: true,
|
|
103
|
+
points: [
|
|
104
|
+
'BMP 在本地处理,绝不离开您的设备',
|
|
105
|
+
'毫秒级的即时转换',
|
|
106
|
+
'没有体积或文件数量限制',
|
|
107
|
+
'完全隐私:0 字节向外传输',
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: '本地 BMP 转 PNG 的工作原理',
|
|
115
|
+
level: 3,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'paragraph',
|
|
119
|
+
html: '该过程利用了 HTML5 的 Canvas API。BMP 文件通过浏览器的 <code>FileReader</code> API 读取并解码为内存中的 Blob。该 Blob 被绘制在不可见的 HTML5 画布上。接着,<code>toDataURL(\'image/png\')</code> 方法应用浏览器原生的 PNG 压缩算法并生成结果文件。',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'paragraph',
|
|
123
|
+
html: '与转换为 JPG 不同,转换为 PNG 是完全无损的:原始 BMP 的每个颜色值都会在生成的 PNG 中得到精确保留。没有伪影,没有边缘模糊,没有信息丢失。最终文件在视觉上与 BMP 完全相同,但占用的磁盘空间减少了 3 到 5 倍。',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
type: 'paragraph',
|
|
127
|
+
html: '如果您使用的是导出 BMP 的旧软件(工业设备、控制系统、医疗诊断软件),转换为 PNG 是最佳决策。PNG 与几乎所有现代程序兼容,保持完美的色彩忠诚度,且空间占用减少高达 5 倍。这是最简单、最安全的迁移方式。',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'title',
|
|
131
|
+
text: '生成 PNG 的应用场景与兼容性',
|
|
132
|
+
level: 3,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'list',
|
|
136
|
+
icon: 'mdi:check-circle',
|
|
137
|
+
items: [
|
|
138
|
+
'完美保留精确颜色的屏幕截图和界面图形。',
|
|
139
|
+
'技术文档图像和软件图表。',
|
|
140
|
+
'CAD 导出、工业系统和老旧软件产出物。',
|
|
141
|
+
'增加了透明度的徽标和视觉识别元素。',
|
|
142
|
+
'兼容 Adobe Photoshop、GIMP、Figma 和所有现代编辑器。',
|
|
143
|
+
],
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'title',
|
|
147
|
+
text: '结论:PNG 是 BMP 的理想进化形式',
|
|
148
|
+
level: 3,
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
type: 'paragraph',
|
|
152
|
+
html: '将 BMP 转换为 PNG 是图像文件最自然的现代化方式:相同的无损质量、更强的兼容性、支持透明度且体积轻巧 3 到 5 倍。我们的工具在您的浏览器中直接完成此项转换,无需上传任何文件到服务器。',
|
|
153
|
+
},
|
|
154
|
+
];
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
export const content: BmpAPngLocaleContent = {
|
|
158
|
+
slug,
|
|
159
|
+
title,
|
|
160
|
+
description,
|
|
161
|
+
ui,
|
|
162
|
+
seo,
|
|
163
|
+
faq,
|
|
164
|
+
bibliography,
|
|
165
|
+
howTo,
|
|
166
|
+
schemas: generateSchemas({ title, description, inLanguage: 'zh', faq, howTo }),
|
|
167
|
+
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
---
|
|
2
|
-
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
-
import { bmpAPng } 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 bmpAPng.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 { bmpAPng } 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 bmpAPng.i18n[locale]?.();
|
|
12
|
+
if (!content) return null;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|