@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 { JpgAPngLocaleContent } from '../index';
|
|
5
|
-
|
|
6
|
-
const slug = 'jpg-to-png-converter';
|
|
7
|
-
const title = 'Convert JPG to PNG Online and Free';
|
|
8
|
-
const description =
|
|
9
|
-
'Convert JPG images to PNG in your browser without uploading files. Lossless conversion, free and completely private.';
|
|
10
|
-
|
|
11
|
-
const ui: ImageConverterUI = {
|
|
12
|
-
dragText: 'Drag JPG files...',
|
|
13
|
-
convertText: 'To convert them to PNG instantly',
|
|
14
|
-
selectFiles: 'Select files',
|
|
15
|
-
processedFiles: 'Processed files',
|
|
16
|
-
downloadAll: 'Download All (.zip)',
|
|
4
|
+
import type { JpgAPngLocaleContent } from '../index';
|
|
5
|
+
|
|
6
|
+
const slug = 'jpg-to-png-converter';
|
|
7
|
+
const title = 'Convert JPG to PNG Online and Free';
|
|
8
|
+
const description =
|
|
9
|
+
'Convert JPG images to PNG in your browser without uploading files. Lossless conversion, free and completely private.';
|
|
10
|
+
|
|
11
|
+
const ui: ImageConverterUI = {
|
|
12
|
+
dragText: 'Drag JPG files...',
|
|
13
|
+
convertText: 'To convert them to PNG 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: JpgAPngLocaleContent['faq'] = [
|
|
23
|
-
{
|
|
24
|
-
question: 'When should I use JPG to PNG?',
|
|
25
|
-
answer:
|
|
26
|
-
'Whenever you plan to edit text or logos within a photograph. If you save a JPG multiple times, it degrades. PNG freezes the compression.',
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
question: 'Will the PNG file have a transparent background immediately?',
|
|
30
|
-
answer:
|
|
31
|
-
'No. The original JPG was flat and without that type of structural channel. The resulting PNG will prepare that container, then you must isolate the element using Photoshop or another editor.',
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
question: 'Does this website have traffic limits?',
|
|
35
|
-
answer:
|
|
36
|
-
'Thanks to Edge technologies without cloud dependencies, your conversion has no limits because it uses your computer or mobile entirely.',
|
|
37
|
-
},
|
|
38
|
-
];
|
|
39
|
-
|
|
40
|
-
const howTo: JpgAPngLocaleContent['howTo'] = [
|
|
41
|
-
{
|
|
42
|
-
name: 'Drag JPG to the panel',
|
|
43
|
-
text: 'Upload static JPG images using touch mouse or computer file picker.',
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: 'Lossless Execution',
|
|
47
|
-
text: 'The Vanilla software pushes the frame bits into a native lossless wrapper of the PNG family.',
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: 'Finish Session',
|
|
51
|
-
text: 'Click the panel and your browser will deposit the downloaded web assets in your User Folders.',
|
|
52
|
-
},
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
const seo: JpgAPngLocaleContent['seo'] = [
|
|
56
|
-
{
|
|
57
|
-
type: 'title',
|
|
58
|
-
text: 'JPG to PNG Converter: Edit Without Quality Loss and Add Transparency',
|
|
59
|
-
level: 2,
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
type: 'paragraph',
|
|
63
|
-
html: '<strong>JPG</strong> is unbeatable for camera photographs, but it has a critical weakness: every time you save the file, it applies its lossy compression again, progressively degrading edges and gradients. <strong>PNG</strong> uses lossless compression - once saved, pixels are immutable. Converting a JPG to PNG is the essential step when you need to prepare an image for intensive editing, add a transparent background, or integrate it into a design workflow that requires multiple saves.',
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
type: 'title',
|
|
67
|
-
text: 'JPG or PNG? When to use each format',
|
|
68
|
-
level: 3,
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
type: 'paragraph',
|
|
72
|
-
html: '<strong>JPG</strong> is the king of photography: small files, compatible with everything. But its compression artifacts accumulate with each edit and re-save. If you need to crop, retouch, or add text to an image repeatedly, starting from JPG means introducing degradation in every cycle. JPG also lacks an alpha channel: it cannot have transparent backgrounds, which disqualifies it for logos, icons, and UI elements.',
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
type: 'paragraph',
|
|
76
|
-
html: '<strong>PNG</strong> is the right choice for corporate logos, screenshots with sharp text, interface elements, product images with white backgrounds that you will later need to cut out, or any graphic asset that will be edited more than once. Lossless compression guarantees that text edges remain perfectly defined and flat colors stay pure - no JPEG noise.',
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
type: 'title',
|
|
80
|
-
text: 'Comparison: Local vs Cloud Conversion',
|
|
81
|
-
level: 3,
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
type: 'comparative',
|
|
85
|
-
items: [
|
|
86
|
-
{
|
|
87
|
-
title: 'Cloud Converters',
|
|
88
|
-
description: 'Tools that upload your files to a remote server.',
|
|
89
|
-
icon: 'mdi:cloud-upload',
|
|
90
|
-
pointIcon: 'mdi:close-circle-outline',
|
|
91
|
-
points: [
|
|
92
|
-
'Network latency on upload and download',
|
|
93
|
-
'Your images are stored on third-party servers',
|
|
94
|
-
'File size limits and daily conversion caps',
|
|
95
|
-
'Intrusive ads and third-party trackers',
|
|
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
|
-
'Instant speed - zero network latency',
|
|
105
|
-
'Complete privacy - 0 bytes sent externally',
|
|
106
|
-
'No MB limits or file count restrictions',
|
|
107
|
-
'Clean interface, no ads or tracking',
|
|
108
|
-
],
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
type: 'title',
|
|
114
|
-
text: 'How it works technically',
|
|
115
|
-
level: 3,
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
type: 'paragraph',
|
|
119
|
-
html: 'The process is entirely local: the browser creates a <strong>Blob</strong> from the selected JPG and draws it onto an in-memory <strong>HTML5 Canvas</strong>. Once rendered, it calls <code>toDataURL(\'image/png\')</code> - the browser\'s built-in PNG codec re-encodes every pixel without applying any new lossy compression. The result is a PNG that faithfully preserves the current state of the JPG: neither better nor worse, simply frozen.',
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
type: 'paragraph',
|
|
123
|
-
html: 'The resulting PNG uses lossless DEFLATE compression, the same used by professional tools like Photoshop or GIMP. Its size will be larger than the original JPG - typically 2 to 5 times - because it stores all pixels without discarding any information. This is the price paid for fidelity and infinite editability.',
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
type: 'tip',
|
|
127
|
-
title: 'Important: PNG does not recover JPEG quality',
|
|
128
|
-
html: 'Converting a JPG to PNG <strong>does not recover quality lost</strong> during the original JPEG compression. If your JPG already had block artifacts or color noise, the PNG will preserve them intact - it simply prevents more from being added. Think of the conversion as "freezing" the current state of the image so that future edits do not degrade it further.',
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
type: 'title',
|
|
132
|
-
text: 'Use cases and compatibility',
|
|
133
|
-
level: 3,
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
type: 'list',
|
|
137
|
-
icon: 'mdi:check-circle',
|
|
138
|
-
items: [
|
|
139
|
-
'Logos and brand elements that need a transparent background after cutting out.',
|
|
140
|
-
'Screenshots with text that will be edited and re-saved multiple times.',
|
|
141
|
-
'Product images for e-commerce requiring a clean, cuttable white background.',
|
|
142
|
-
'Graphic assets for PowerPoint or Google Slides presentations.',
|
|
143
|
-
'UI assets for web and mobile applications where edge sharpness is critical.',
|
|
144
|
-
],
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
type: 'title',
|
|
148
|
-
text: 'Conclusion',
|
|
149
|
-
level: 3,
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
type: 'paragraph',
|
|
153
|
-
html: 'Converting JPG to PNG is the first step in any serious design workflow. It does not transform the original quality, but it protects every pixel from future edits. With this tool, the process happens instantly and completely privately - your corporate or personal images never leave your device at any point.',
|
|
154
|
-
},
|
|
155
|
-
];
|
|
156
|
-
|
|
18
|
+
bibliographyTitle: 'Bibliographic References',
|
|
19
|
+
faqTitle: 'Frequently Asked Questions',
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const faq: JpgAPngLocaleContent['faq'] = [
|
|
23
|
+
{
|
|
24
|
+
question: 'When should I use JPG to PNG?',
|
|
25
|
+
answer:
|
|
26
|
+
'Whenever you plan to edit text or logos within a photograph. If you save a JPG multiple times, it degrades. PNG freezes the compression.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
question: 'Will the PNG file have a transparent background immediately?',
|
|
30
|
+
answer:
|
|
31
|
+
'No. The original JPG was flat and without that type of structural channel. The resulting PNG will prepare that container, then you must isolate the element using Photoshop or another editor.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: 'Does this website have traffic limits?',
|
|
35
|
+
answer:
|
|
36
|
+
'Thanks to Edge technologies without cloud dependencies, your conversion has no limits because it uses your computer or mobile entirely.',
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
const howTo: JpgAPngLocaleContent['howTo'] = [
|
|
41
|
+
{
|
|
42
|
+
name: 'Drag JPG to the panel',
|
|
43
|
+
text: 'Upload static JPG images using touch mouse or computer file picker.',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'Lossless Execution',
|
|
47
|
+
text: 'The Vanilla software pushes the frame bits into a native lossless wrapper of the PNG family.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'Finish Session',
|
|
51
|
+
text: 'Click the panel and your browser will deposit the downloaded web assets in your User Folders.',
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
const seo: JpgAPngLocaleContent['seo'] = [
|
|
56
|
+
{
|
|
57
|
+
type: 'title',
|
|
58
|
+
text: 'JPG to PNG Converter: Edit Without Quality Loss and Add Transparency',
|
|
59
|
+
level: 2,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'paragraph',
|
|
63
|
+
html: '<strong>JPG</strong> is unbeatable for camera photographs, but it has a critical weakness: every time you save the file, it applies its lossy compression again, progressively degrading edges and gradients. <strong>PNG</strong> uses lossless compression - once saved, pixels are immutable. Converting a JPG to PNG is the essential step when you need to prepare an image for intensive editing, add a transparent background, or integrate it into a design workflow that requires multiple saves.',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
type: 'title',
|
|
67
|
+
text: 'JPG or PNG? When to use each format',
|
|
68
|
+
level: 3,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: 'paragraph',
|
|
72
|
+
html: '<strong>JPG</strong> is the king of photography: small files, compatible with everything. But its compression artifacts accumulate with each edit and re-save. If you need to crop, retouch, or add text to an image repeatedly, starting from JPG means introducing degradation in every cycle. JPG also lacks an alpha channel: it cannot have transparent backgrounds, which disqualifies it for logos, icons, and UI elements.',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
type: 'paragraph',
|
|
76
|
+
html: '<strong>PNG</strong> is the right choice for corporate logos, screenshots with sharp text, interface elements, product images with white backgrounds that you will later need to cut out, or any graphic asset that will be edited more than once. Lossless compression guarantees that text edges remain perfectly defined and flat colors stay pure - no JPEG noise.',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
type: 'title',
|
|
80
|
+
text: 'Comparison: Local vs Cloud Conversion',
|
|
81
|
+
level: 3,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
type: 'comparative',
|
|
85
|
+
items: [
|
|
86
|
+
{
|
|
87
|
+
title: 'Cloud Converters',
|
|
88
|
+
description: 'Tools that upload your files to a remote server.',
|
|
89
|
+
icon: 'mdi:cloud-upload',
|
|
90
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
91
|
+
points: [
|
|
92
|
+
'Network latency on upload and download',
|
|
93
|
+
'Your images are stored on third-party servers',
|
|
94
|
+
'File size limits and daily conversion caps',
|
|
95
|
+
'Intrusive ads and third-party trackers',
|
|
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
|
+
'Instant speed - zero network latency',
|
|
105
|
+
'Complete privacy - 0 bytes sent externally',
|
|
106
|
+
'No MB limits or file count restrictions',
|
|
107
|
+
'Clean interface, no ads or tracking',
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: 'How it works technically',
|
|
115
|
+
level: 3,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'paragraph',
|
|
119
|
+
html: 'The process is entirely local: the browser creates a <strong>Blob</strong> from the selected JPG and draws it onto an in-memory <strong>HTML5 Canvas</strong>. Once rendered, it calls <code>toDataURL(\'image/png\')</code> - the browser\'s built-in PNG codec re-encodes every pixel without applying any new lossy compression. The result is a PNG that faithfully preserves the current state of the JPG: neither better nor worse, simply frozen.',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'paragraph',
|
|
123
|
+
html: 'The resulting PNG uses lossless DEFLATE compression, the same used by professional tools like Photoshop or GIMP. Its size will be larger than the original JPG - typically 2 to 5 times - because it stores all pixels without discarding any information. This is the price paid for fidelity and infinite editability.',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
type: 'tip',
|
|
127
|
+
title: 'Important: PNG does not recover JPEG quality',
|
|
128
|
+
html: 'Converting a JPG to PNG <strong>does not recover quality lost</strong> during the original JPEG compression. If your JPG already had block artifacts or color noise, the PNG will preserve them intact - it simply prevents more from being added. Think of the conversion as "freezing" the current state of the image so that future edits do not degrade it further.',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
type: 'title',
|
|
132
|
+
text: 'Use cases and compatibility',
|
|
133
|
+
level: 3,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'list',
|
|
137
|
+
icon: 'mdi:check-circle',
|
|
138
|
+
items: [
|
|
139
|
+
'Logos and brand elements that need a transparent background after cutting out.',
|
|
140
|
+
'Screenshots with text that will be edited and re-saved multiple times.',
|
|
141
|
+
'Product images for e-commerce requiring a clean, cuttable white background.',
|
|
142
|
+
'Graphic assets for PowerPoint or Google Slides presentations.',
|
|
143
|
+
'UI assets for web and mobile applications where edge sharpness is critical.',
|
|
144
|
+
],
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'title',
|
|
148
|
+
text: 'Conclusion',
|
|
149
|
+
level: 3,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'paragraph',
|
|
153
|
+
html: 'Converting JPG to PNG is the first step in any serious design workflow. It does not transform the original quality, but it protects every pixel from future edits. With this tool, the process happens instantly and completely privately - your corporate or personal images never leave your device at any point.',
|
|
154
|
+
},
|
|
155
|
+
];
|
|
157
156
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
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: 'en', faq, howTo }),
|
|
168
|
+
};
|