@jjlmoya/utils-audiovisual 1.6.0 → 1.8.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 +59 -58
- package/src/category/i18n/de.ts +198 -0
- package/src/category/i18n/fr.ts +1 -1
- package/src/category/i18n/id.ts +198 -0
- package/src/category/i18n/it.ts +198 -0
- package/src/category/i18n/ja.ts +198 -0
- package/src/category/i18n/ko.ts +198 -0
- package/src/category/i18n/nl.ts +198 -0
- package/src/category/i18n/pl.ts +198 -0
- package/src/category/i18n/pt.ts +198 -0
- package/src/category/i18n/ru.ts +198 -0
- package/src/category/i18n/sv.ts +198 -0
- package/src/category/i18n/tr.ts +198 -0
- package/src/category/i18n/zh.ts +198 -0
- package/src/category/index.ts +31 -3
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tool/chromaticLens/i18n/de.ts +246 -0
- package/src/tool/chromaticLens/i18n/en.ts +1 -1
- package/src/tool/chromaticLens/i18n/es.ts +1 -1
- package/src/tool/chromaticLens/i18n/fr.ts +1 -1
- package/src/tool/chromaticLens/i18n/id.ts +246 -0
- package/src/tool/chromaticLens/i18n/it.ts +246 -0
- package/src/tool/chromaticLens/i18n/ja.ts +246 -0
- package/src/tool/chromaticLens/i18n/ko.ts +246 -0
- package/src/tool/chromaticLens/i18n/nl.ts +246 -0
- package/src/tool/chromaticLens/i18n/pl.ts +246 -0
- package/src/tool/chromaticLens/i18n/pt.ts +246 -0
- package/src/tool/chromaticLens/i18n/ru.ts +246 -0
- package/src/tool/chromaticLens/i18n/sv.ts +246 -0
- package/src/tool/chromaticLens/i18n/tr.ts +246 -0
- package/src/tool/chromaticLens/i18n/zh.ts +246 -0
- package/src/tool/chromaticLens/index.ts +15 -7
- package/src/tool/collageMaker/i18n/de.ts +233 -0
- package/src/tool/collageMaker/i18n/en.ts +1 -1
- package/src/tool/collageMaker/i18n/es.ts +1 -1
- package/src/tool/collageMaker/i18n/fr.ts +1 -1
- package/src/tool/collageMaker/i18n/id.ts +233 -0
- package/src/tool/collageMaker/i18n/it.ts +233 -0
- package/src/tool/collageMaker/i18n/ja.ts +233 -0
- package/src/tool/collageMaker/i18n/ko.ts +233 -0
- package/src/tool/collageMaker/i18n/nl.ts +233 -0
- package/src/tool/collageMaker/i18n/pl.ts +233 -0
- package/src/tool/collageMaker/i18n/pt.ts +233 -0
- package/src/tool/collageMaker/i18n/ru.ts +233 -0
- package/src/tool/collageMaker/i18n/sv.ts +233 -0
- package/src/tool/collageMaker/i18n/tr.ts +233 -0
- package/src/tool/collageMaker/i18n/zh.ts +233 -0
- package/src/tool/collageMaker/index.ts +15 -6
- package/src/tool/exifCleaner/i18n/de.ts +277 -0
- package/src/tool/exifCleaner/i18n/en.ts +2 -2
- package/src/tool/exifCleaner/i18n/es.ts +2 -2
- package/src/tool/exifCleaner/i18n/fr.ts +4 -4
- package/src/tool/exifCleaner/i18n/id.ts +277 -0
- package/src/tool/exifCleaner/i18n/it.ts +277 -0
- package/src/tool/exifCleaner/i18n/ja.ts +277 -0
- package/src/tool/exifCleaner/i18n/ko.ts +277 -0
- package/src/tool/exifCleaner/i18n/nl.ts +277 -0
- package/src/tool/exifCleaner/i18n/pl.ts +277 -0
- package/src/tool/exifCleaner/i18n/pt.ts +277 -0
- package/src/tool/exifCleaner/i18n/ru.ts +277 -0
- package/src/tool/exifCleaner/i18n/sv.ts +277 -0
- package/src/tool/exifCleaner/i18n/tr.ts +277 -0
- package/src/tool/exifCleaner/i18n/zh.ts +277 -0
- package/src/tool/exifCleaner/index.ts +16 -8
- package/src/tool/imageCompressor/i18n/de.ts +242 -0
- package/src/tool/imageCompressor/i18n/en.ts +2 -2
- package/src/tool/imageCompressor/i18n/es.ts +2 -2
- package/src/tool/imageCompressor/i18n/id.ts +242 -0
- package/src/tool/imageCompressor/i18n/it.ts +242 -0
- package/src/tool/imageCompressor/i18n/ja.ts +242 -0
- package/src/tool/imageCompressor/i18n/ko.ts +242 -0
- package/src/tool/imageCompressor/i18n/nl.ts +242 -0
- package/src/tool/imageCompressor/i18n/pl.ts +242 -0
- package/src/tool/imageCompressor/i18n/pt.ts +242 -0
- package/src/tool/imageCompressor/i18n/ru.ts +242 -0
- package/src/tool/imageCompressor/i18n/sv.ts +242 -0
- package/src/tool/imageCompressor/i18n/tr.ts +242 -0
- package/src/tool/imageCompressor/i18n/zh.ts +244 -0
- package/src/tool/imageCompressor/index.ts +15 -7
- package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/en.ts +2 -2
- package/src/tool/printQualityCalculator/i18n/es.ts +3 -3
- package/src/tool/printQualityCalculator/i18n/fr.ts +3 -3
- package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
- package/src/tool/printQualityCalculator/index.ts +15 -7
- package/src/tool/privacyBlur/i18n/de.ts +238 -0
- package/src/tool/privacyBlur/i18n/en.ts +1 -1
- package/src/tool/privacyBlur/i18n/es.ts +1 -1
- package/src/tool/privacyBlur/i18n/fr.ts +1 -1
- package/src/tool/privacyBlur/i18n/id.ts +238 -0
- package/src/tool/privacyBlur/i18n/it.ts +238 -0
- package/src/tool/privacyBlur/i18n/ja.ts +238 -0
- package/src/tool/privacyBlur/i18n/ko.ts +238 -0
- package/src/tool/privacyBlur/i18n/nl.ts +238 -0
- package/src/tool/privacyBlur/i18n/pl.ts +238 -0
- package/src/tool/privacyBlur/i18n/pt.ts +238 -0
- package/src/tool/privacyBlur/i18n/ru.ts +238 -0
- package/src/tool/privacyBlur/i18n/sv.ts +238 -0
- package/src/tool/privacyBlur/i18n/tr.ts +238 -0
- package/src/tool/privacyBlur/i18n/zh.ts +238 -0
- package/src/tool/privacyBlur/index.ts +15 -7
- package/src/tool/subtitleSync/i18n/de.ts +241 -0
- package/src/tool/subtitleSync/i18n/en.ts +1 -1
- package/src/tool/subtitleSync/i18n/es.ts +1 -1
- package/src/tool/subtitleSync/i18n/fr.ts +8 -8
- package/src/tool/subtitleSync/i18n/id.ts +241 -0
- package/src/tool/subtitleSync/i18n/it.ts +241 -0
- package/src/tool/subtitleSync/i18n/ja.ts +241 -0
- package/src/tool/subtitleSync/i18n/ko.ts +241 -0
- package/src/tool/subtitleSync/i18n/nl.ts +241 -0
- package/src/tool/subtitleSync/i18n/pl.ts +241 -0
- package/src/tool/subtitleSync/i18n/pt.ts +241 -0
- package/src/tool/subtitleSync/i18n/ru.ts +241 -0
- package/src/tool/subtitleSync/i18n/sv.ts +241 -0
- package/src/tool/subtitleSync/i18n/tr.ts +241 -0
- package/src/tool/subtitleSync/i18n/zh.ts +241 -0
- package/src/tool/subtitleSync/index.ts +15 -7
- package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
- package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
- package/src/tool/timelapseCalculator/index.ts +16 -8
- package/src/tool/tvDistance/i18n/de.ts +223 -0
- package/src/tool/tvDistance/i18n/en.ts +1 -1
- package/src/tool/tvDistance/i18n/es.ts +1 -1
- package/src/tool/tvDistance/i18n/fr.ts +1 -1
- package/src/tool/tvDistance/i18n/id.ts +223 -0
- package/src/tool/tvDistance/i18n/it.ts +223 -0
- package/src/tool/tvDistance/i18n/ja.ts +223 -0
- package/src/tool/tvDistance/i18n/ko.ts +223 -0
- package/src/tool/tvDistance/i18n/nl.ts +223 -0
- package/src/tool/tvDistance/i18n/pl.ts +223 -0
- package/src/tool/tvDistance/i18n/pt.ts +223 -0
- package/src/tool/tvDistance/i18n/ru.ts +223 -0
- package/src/tool/tvDistance/i18n/sv.ts +223 -0
- package/src/tool/tvDistance/i18n/tr.ts +223 -0
- package/src/tool/tvDistance/i18n/zh.ts +223 -0
- package/src/tool/tvDistance/index.ts +15 -7
- package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/en.ts +1 -1
- package/src/tool/videoFrameExtractor/i18n/es.ts +1 -1
- package/src/tool/videoFrameExtractor/i18n/fr.ts +1 -1
- package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
- package/src/tool/videoFrameExtractor/index.ts +16 -8
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ImageCompressorUI, ImageCompressorLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'kompresor-gambar-online-kurangi-ukuran-file-tanpa-kehilangan-kualitas';
|
|
5
|
+
const title = 'Kompresor Gambar Online: Kurangi berat tanpa kehilangan kualitas';
|
|
6
|
+
const description = 'Optimalkan dan kompres foto JPG, PNG, dan WebP Anda secara gratis. Kurangi ukuran file untuk meningkatkan kecepatan pemuatan web Anda secara lokal.';
|
|
7
|
+
|
|
8
|
+
const ui: ImageCompressorUI = {
|
|
9
|
+
dropTitle: "Optimalkan Gambar",
|
|
10
|
+
dropSubtitle: "Seret foto Anda untuk mengurangi beratnya secara instan.",
|
|
11
|
+
settingsTitle: "Pengaturan Kompresi",
|
|
12
|
+
qualityLabel: "Kualitas Visual",
|
|
13
|
+
widthLabel: "Lebar Maksimum (Piksel)",
|
|
14
|
+
convertToWebpLabel: "Konversi ke WebP",
|
|
15
|
+
compressionLabel: "Kompresi",
|
|
16
|
+
compressBtn: "Kompres Gambar",
|
|
17
|
+
processingText: "Memproses...",
|
|
18
|
+
resultsTitle: "Gambar yang Dioptimalkan",
|
|
19
|
+
originalSizeLabel: "Ukuran Asli",
|
|
20
|
+
newSizeLabel: "Ukuran Baru",
|
|
21
|
+
reductionLabel: "Penghematan",
|
|
22
|
+
downloadBtn: "Unduh",
|
|
23
|
+
addMoreBtn: "Tambah lagi",
|
|
24
|
+
browseFilesBtn: "Telusuri file",
|
|
25
|
+
processedFilesTitle: "File yang Diperoses",
|
|
26
|
+
downloadAllBtn: "Unduh Semua",
|
|
27
|
+
adjustThisImage: "Sesuaikan gambar ini",
|
|
28
|
+
downloadTitle: "Unduh",
|
|
29
|
+
maxWidthLabel: "Lebar maks (px)",
|
|
30
|
+
closeBtn: "Tutup",
|
|
31
|
+
totalSavingsLabel: "Total penghematan",
|
|
32
|
+
noSavings: "Tidak ada penghematan bersih",
|
|
33
|
+
faqTitle: "Pertanyaan yang Sering Diajukan",
|
|
34
|
+
bibliographyTitle: "Referensi"
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const faq: ImageCompressorLocaleContent['faq'] = [
|
|
38
|
+
{
|
|
39
|
+
question: "Bagaimana cara kerja kompresi lossless?",
|
|
40
|
+
answer: "Kami menggunakan algoritma yang menghapus metadata yang tidak perlu dan mengoptimalkan pengkodean piksel. Saat memilih WebP, teknologi kompresi yang lebih canggih daripada format tradisional digunakan.",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: "Apakah gambar saya diunggah ke server mana pun?",
|
|
44
|
+
answer: "Tidak. Semua pemrosesan terjadi 100% di browser Anda (Client-Side). Foto Anda tidak pernah meninggalkan komputer Anda, menjamin privasi absolut.",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
question: "Mengapa saya harus mengonversi ke WebP?",
|
|
48
|
+
answer: "WebP adalah format standar modern untuk web. Ini menawarkan kualitas yang lebih unggul daripada JPG dan PNG dengan berat hingga 30% lebih sedikit, yang mempercepat waktu pemuatan halaman.",
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const howTo: ImageCompressorLocaleContent['howTo'] = [
|
|
53
|
+
{
|
|
54
|
+
name: "Unggah gambar",
|
|
55
|
+
text: "Unggah file yang ingin Anda kompres (JPG, PNG, atau WebP).",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "Sesuaikan kualitas",
|
|
59
|
+
text: "Gunakan penggeser untuk menemukan keseimbangan sempurna antara ukuran file dan kualitas visual (disarankan: 75 85%).",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: "Ubah ukuran (opsional)",
|
|
63
|
+
text: "Jika gambar sangat besar, Anda dapat menentukan lebar maksimum untuk mengurangi resolusinya.",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "Unduh hasilnya",
|
|
67
|
+
text: "Tekan tombol unduh untuk mendapatkan gambar yang dioptimalkan yang siap digunakan.",
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
const bibliography: ImageCompressorLocaleContent['bibliography'] = [
|
|
72
|
+
{
|
|
73
|
+
name: "WebP: Format Gambar untuk Web",
|
|
74
|
+
url: "https://developers.google.com/speed/webp",
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "Pentingnya optimalisasi gambar untuk SEO",
|
|
78
|
+
url: "https://developers.google.com/search/docs/appearance/google-images",
|
|
79
|
+
},
|
|
80
|
+
];
|
|
81
|
+
|
|
82
|
+
const seo: ImageCompressorLocaleContent['seo'] = [
|
|
83
|
+
{
|
|
84
|
+
type: 'summary',
|
|
85
|
+
title: 'Optimalisasi Gambar Web Profesional',
|
|
86
|
+
items: [
|
|
87
|
+
'Kompresi JPG, PNG, dan WebP yang cerdas',
|
|
88
|
+
'Kurangi berat 50-80% dengan menjaga kualitas visual',
|
|
89
|
+
'Pemrosesan lokal 100% - privasi terjamin',
|
|
90
|
+
'Tingkatkan Core Web Vitals dan posisi SEO'
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
{ type: 'title', text: 'Optimalisasi Gambar: Kecepatan Web dan Core Web Vitals', level: 2 },
|
|
94
|
+
{ type: 'paragraph', html: 'Di era kesegeraan digital, web yang lambat akan kehilangan pengguna. Gambar yang tidak dioptimalkan mewakili 60-70% dari total berat halaman web. Mengoptimalkannya adalah langkah pertama untuk meningkatkan metrik Google Anda (LCP, CLS) dan posisi Anda dalam hasil pencarian.' },
|
|
95
|
+
|
|
96
|
+
{ type: 'stats', items: [
|
|
97
|
+
{ value: '50-80%', label: 'Pengurangan Berat Tipikal', icon: 'mdi:trending-down' },
|
|
98
|
+
{ value: '100%', label: 'Privasi Lokal', icon: 'mdi:lock' },
|
|
99
|
+
{ value: '+30%', label: 'Lebih Cepat dari JPG', icon: 'mdi:speedometer' }
|
|
100
|
+
], columns: 3 },
|
|
101
|
+
|
|
102
|
+
{ type: 'title', text: 'Format Kompresi Dijelaskan', level: 3 },
|
|
103
|
+
{ type: 'table', headers: ['Format', 'Kompresi', 'Kasus Penggunaan', 'Kompatibilitas'], rows: [
|
|
104
|
+
['JPEG', 'Lossy 50-90%', 'Foto kamera, konten editorial', 'Universal (100%)'],
|
|
105
|
+
['PNG', 'Lossless 30-50%', 'Grafis, logo, transparansi', 'Universal (100%)'],
|
|
106
|
+
['WebP', 'Lossy/Lossless 25-35% lebih banyak', 'Web modern, jejaring sosial', '95% browser modern'],
|
|
107
|
+
['AVIF', 'Lossy/Lossless peningkatan 20%', 'Web generasi berikutnya', 'Hanya browser baru']
|
|
108
|
+
] },
|
|
109
|
+
|
|
110
|
+
{ type: 'card', title: 'Mengapa WebP adalah Masa Depan', html: 'Google mengembangkan WebP khusus untuk web. Format ini menawarkan kompresi yang lebih baik daripada JPEG dan PNG, dengan menjaga atau meningkatkan kualitas visual. Ukurannya 25-35% lebih kecil daripada JPEG yang setara. Browser modern mendukungnya hingga 95%.' },
|
|
111
|
+
|
|
112
|
+
{ type: 'title', text: 'Kompresi Lossy vs Lossless', level: 3 },
|
|
113
|
+
{ type: 'comparative', items: [
|
|
114
|
+
{
|
|
115
|
+
title: 'Kompresi Lossy',
|
|
116
|
+
description: 'JPG, WebP - Menghapus informasi visual yang tidak terlihat',
|
|
117
|
+
icon: 'mdi:compress',
|
|
118
|
+
points: [
|
|
119
|
+
'Mengurangi 70-90% dari berat asli',
|
|
120
|
+
'Tidak terlihat oleh mata manusia jika kualitas dijaga >75%',
|
|
121
|
+
'Ideal untuk fotografi realistis',
|
|
122
|
+
'Tidak disarankan untuk logo atau teks yang tajam'
|
|
123
|
+
],
|
|
124
|
+
highlight: true
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
title: 'Kompresi Lossless',
|
|
128
|
+
description: 'PNG, WebP lossless - Menjaga 100% data visual',
|
|
129
|
+
icon: 'mdi:shield',
|
|
130
|
+
points: [
|
|
131
|
+
'Mengurangi 20-50% berat',
|
|
132
|
+
'Kualitas sempurna, tidak ada degradasi',
|
|
133
|
+
'Ideal untuk grafis, logo, transparansi',
|
|
134
|
+
'File lebih berat daripada Lossy'
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
], columns: 2 },
|
|
138
|
+
|
|
139
|
+
{ type: 'title', text: 'Dampak pada SEO dan Konversi', level: 3 },
|
|
140
|
+
{ type: 'list', items: [
|
|
141
|
+
'<strong>Core Web Vitals:</strong> Google menghukum situs yang lambat. Gambar yang dioptimalkan meningkatkan LCP (Largest Contentful Paint) secara langsung.',
|
|
142
|
+
'<strong>Rasio Pentalan:</strong> Setiap detik penundaan = 7% lebih banyak pentalan. Gambar yang lebih cepat = lebih sedikit pengguna yang pergi.',
|
|
143
|
+
'<strong>Peringkat Pencarian:</strong> Kecepatan adalah faktor peringkat. Mengoptimalkan gambar meningkatkan posisi.',
|
|
144
|
+
'<strong>Konversi:</strong> Waktu pemuatan yang lebih cepat = lebih banyak konversi. Studi menunjukkan peningkatan konversi +10% dengan optimalisasi.'
|
|
145
|
+
], icon: 'mdi:check' },
|
|
146
|
+
|
|
147
|
+
{ type: 'proscons', items: [
|
|
148
|
+
{
|
|
149
|
+
pro: 'Privasi total: pemrosesan lokal 100%, tidak ada server cloud',
|
|
150
|
+
con: 'Memerlukan browser dengan dukungan Canvas API (ini universal)'
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
pro: 'WebP 25-35% lebih kecil daripada JPEG dengan kualitas yang sama',
|
|
154
|
+
con: 'Safari versi lama dan IE tidak mendukung WebP (fallback tersedia)'
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
pro: 'Pemrosesan instan beberapa gambar',
|
|
158
|
+
con: 'Gambar yang sangat besar (>50MB) mungkin memerlukan waktu tunggu'
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
pro: 'Ubah ukuran opsional: mengurangi resolusi serta kompresi',
|
|
162
|
+
con: 'Mengubah ukuran menghilangkan informasi - lebih baik mengoptimalkan resolusi di sumbernya'
|
|
163
|
+
}
|
|
164
|
+
], proTitle: 'Keuntungan', conTitle: 'Batasan' },
|
|
165
|
+
|
|
166
|
+
{ type: 'diagnostic', variant: 'warning', title: 'Perhatian: Kompresi Berlebih Menurunkan Kualitas', icon: 'mdi:alert', badge: 'Kualitas', html: 'Jaga kualitas >75% untuk fotografi dan >85% untuk konten editorial. Di bawah itu, artefak kompresi (noda, pita warna) menjadi terlihat. Gambar yang terlihat bagus di thumbnail mungkin terlihat buruk saat besar.' },
|
|
167
|
+
|
|
168
|
+
{ type: 'glossary', items: [
|
|
169
|
+
{
|
|
170
|
+
term: 'Kompresi Lossy',
|
|
171
|
+
definition: 'Menghapus data visual yang oleh mata manusia dianggap sebagai \"noise\". Ideal untuk fotografi. JPEG, WebP lossy, HEIC bersifat lossy.'
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
term: 'Kompresi Lossless',
|
|
175
|
+
definition: 'Mengurangi ukuran tanpa kehilangan informasi visual. PNG dan WebP lossless. Ideal untuk grafis, logo, transparansi.'
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
term: 'Core Web Vitals (Google)',
|
|
179
|
+
definition: 'Metrik pengalaman pengguna: LCP (kecepatan pemuatan), FID (latensi interaksi), CLS (stabilitas visual). Mempengaruhi peringkat SEO.'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
term: 'WebP',
|
|
183
|
+
definition: 'Format yang dikembangkan oleh Google. 25-35% lebih kecil dari JPEG. Didukung oleh 95% browser modern (semua kecuali IE).'
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
term: 'Artefak Kompresi',
|
|
187
|
+
definition: 'Cacat visual yang disebabkan oleh kompresi berlebih: noda, pita warna, tepian kabur. Tidak terlihat jika kualitas >75%.'
|
|
188
|
+
}
|
|
189
|
+
] },
|
|
190
|
+
|
|
191
|
+
{ type: 'message', title: 'Optimalisasi Web Profesional', ariaLabel: 'Informasi tentang optimalisasi gambar untuk SEO', html: 'Ini bukan sekadar kesombongan teknis: mengompres gambar adalah investasi langsung dalam pengalaman pengguna dan peringkat di Google. Setiap kilobyte sangat berarti di perangkat seluler. Alat kami mengubah apa yang dulu memerlukan perangkat lunak profesional ($$$) menjadi proses gratis dengan 3 klik.' },
|
|
192
|
+
|
|
193
|
+
{ type: 'title', text: 'Bersiaplah untuk Web Modern', level: 3 },
|
|
194
|
+
{ type: 'paragraph', html: 'Gunakan kompresi cerdas dan format WebP agar kehadiran online Anda cepat, responsif, dan kompetitif dalam pencarian. Kualitas profesional, berat minimum, pemuatan instan.' }
|
|
195
|
+
];
|
|
196
|
+
|
|
197
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
198
|
+
'@context': 'https://schema.org',
|
|
199
|
+
'@type': 'FAQPage',
|
|
200
|
+
mainEntity: faq.map((item) => ({
|
|
201
|
+
'@type': 'Question',
|
|
202
|
+
name: item.question,
|
|
203
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
204
|
+
})),
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
const howToSchema: WithContext<HowTo> = {
|
|
208
|
+
'@context': 'https://schema.org',
|
|
209
|
+
'@type': 'HowTo',
|
|
210
|
+
name: title,
|
|
211
|
+
description,
|
|
212
|
+
step: howTo.map((step) => ({
|
|
213
|
+
'@type': 'HowToStep',
|
|
214
|
+
name: step.name,
|
|
215
|
+
text: step.text,
|
|
216
|
+
})),
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
220
|
+
'@context': 'https://schema.org',
|
|
221
|
+
'@type': 'SoftwareApplication',
|
|
222
|
+
name: title,
|
|
223
|
+
description,
|
|
224
|
+
applicationCategory: 'UtilitiesApplication',
|
|
225
|
+
operatingSystem: 'Web',
|
|
226
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
227
|
+
inLanguage: 'id',
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
export const content: ImageCompressorLocaleContent = {
|
|
231
|
+
slug,
|
|
232
|
+
title,
|
|
233
|
+
description,
|
|
234
|
+
ui,
|
|
235
|
+
seo,
|
|
236
|
+
faqTitle: "Pertanyaan yang Sering Diajukan",
|
|
237
|
+
faq,
|
|
238
|
+
bibliographyTitle: "Referensi",
|
|
239
|
+
bibliography,
|
|
240
|
+
howTo,
|
|
241
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
242
|
+
};
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ImageCompressorUI, ImageCompressorLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'compressore-immagini-online-riduci-dimensioni-senza-perdita-qualita';
|
|
5
|
+
const title = 'Compressore Immagini Online: Riduci il peso senza perdere qualità';
|
|
6
|
+
const description = 'Ottimizza e comprimi le tue foto JPG, PNG e WebP gratuitamente. Riduci le dimensioni del file per migliorare la velocità di caricamento del tuo sito web localmente.';
|
|
7
|
+
|
|
8
|
+
const ui: ImageCompressorUI = {
|
|
9
|
+
dropTitle: "Ottimizza Immagini",
|
|
10
|
+
dropSubtitle: "Trascina le tue foto per ridurne il peso istantaneamente.",
|
|
11
|
+
settingsTitle: "Impostazioni di Compressione",
|
|
12
|
+
qualityLabel: "Qualità Visiva",
|
|
13
|
+
widthLabel: "Larghezza Massima (Pixel)",
|
|
14
|
+
convertToWebpLabel: "Converti in WebP",
|
|
15
|
+
compressionLabel: "Compressione",
|
|
16
|
+
compressBtn: "Comprimi Immagine",
|
|
17
|
+
processingLabel: "Elaborazione in corso...",
|
|
18
|
+
resultsTitle: "Immagini Ottimizzate",
|
|
19
|
+
originalSizeLabel: "Dimensione Originale",
|
|
20
|
+
newSizeLabel: "Nuova Dimensione",
|
|
21
|
+
reductionLabel: "Risparmio",
|
|
22
|
+
downloadBtn: "Scarica",
|
|
23
|
+
addMoreBtn: "Aggiungi altre",
|
|
24
|
+
browseFilesBtn: "Sfoglia file",
|
|
25
|
+
processedFilesTitle: "File Elaborati",
|
|
26
|
+
downloadAllBtn: "Scarica Tutto",
|
|
27
|
+
adjustThisImage: "Regola questa immagine",
|
|
28
|
+
downloadTitle: "Download",
|
|
29
|
+
maxWidthLabel: "Larghezza max (px)",
|
|
30
|
+
closeBtn: "Chiudi",
|
|
31
|
+
totalSavingsLabel: "Risparmio totale",
|
|
32
|
+
noSavings: "Nessun risparmio netto",
|
|
33
|
+
faqTitle: "Domande Frequenti",
|
|
34
|
+
bibliographyTitle: "Riferimenti"
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const faq: ImageCompressorLocaleContent['faq'] = [
|
|
38
|
+
{
|
|
39
|
+
question: "Come funziona la compressione senza perdita?",
|
|
40
|
+
answer: "Utilizziamo algoritmi che rimuovono i metadati non necessari e ottimizzano la codifica dei pixel. Scegliendo WebP, viene utilizzata una tecnologia di compressione più avanzata rispetto ai formati tradizionali.",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: "Le mie immagini vengono caricate su qualche server?",
|
|
44
|
+
answer: "No. Tutta l'elaborazione avviene al 100% nel tuo browser (Client-Side). Le tue foto non lasciano mai il tuo computer, garantendo la massima privacy.",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
question: "Perché dovrei convertire in WebP?",
|
|
48
|
+
answer: "WebP è il moderno formato standard per il web. Offre una qualità superiore a JPG e PNG con un peso inferiore fino al 30%, il che accelera il tempo di caricamento della pagina.",
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const howTo: ImageCompressorLocaleContent['howTo'] = [
|
|
53
|
+
{
|
|
54
|
+
name: "Carica l'immagine",
|
|
55
|
+
text: "Carica il file che desideri comprimere (JPG, PNG o WebP).",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "Regola la qualità",
|
|
59
|
+
text: "Usa lo slider per trovare l'equilibrio perfetto tra dimensione del file e qualità visiva (consigliato: 75-85%).",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: "Ridimensiona (opzionale)",
|
|
63
|
+
text: "Se l'immagine è molto grande, puoi specificare una larghezza massima per ridurne la risoluzione.",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "Scarica il risultato",
|
|
67
|
+
text: "Premi il pulsante di download per ottenere la tua immagine ottimizzata pronta all'uso.",
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
const bibliography: ImageCompressorLocaleContent['bibliography'] = [
|
|
72
|
+
{
|
|
73
|
+
name: "WebP: Un formato immagine per il Web",
|
|
74
|
+
url: "https://developers.google.com/speed/webp",
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "L'importanza dell'ottimizzazione delle immagini per la SEO",
|
|
78
|
+
url: "https://developers.google.com/search/docs/appearance/google-images",
|
|
79
|
+
},
|
|
80
|
+
];
|
|
81
|
+
|
|
82
|
+
const seo: ImageCompressorLocaleContent['seo'] = [
|
|
83
|
+
{
|
|
84
|
+
type: 'summary',
|
|
85
|
+
title: 'Ottimizzazione Professionale Immagini Web',
|
|
86
|
+
items: [
|
|
87
|
+
'Compressione intelligente JPG, PNG e WebP',
|
|
88
|
+
'Riduci il peso del 50-80% mantenendo la qualità visiva',
|
|
89
|
+
'Elaborazione 100% locale - privacy garantita',
|
|
90
|
+
'Migliora i Core Web Vitals e il posizionamento SEO'
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
{ type: 'title', text: 'Ottimizzazione Immagini: Velocità Web e Core Web Vitals', level: 2 },
|
|
94
|
+
{ type: 'paragraph', html: 'Nell\'era dell\'immediatezza digitale, un sito web lento perde utenti. Le immagini non ottimizzate rappresentano il 60-70% del peso totale di una pagina web. Ottimizzarle è il primo passo per migliorare le tue metriche Google (LCP, CLS) e il tuo posizionamento nei risultati di ricerca.' },
|
|
95
|
+
|
|
96
|
+
{ type: 'stats', items: [
|
|
97
|
+
{ value: '50-80%', label: 'Riduzione Peso Tipica', icon: 'mdi:trending-down' },
|
|
98
|
+
{ value: '100%', label: 'Privacy Locale', icon: 'mdi:lock' },
|
|
99
|
+
{ value: '+30%', label: 'Più veloce del JPG', icon: 'mdi:speedometer' }
|
|
100
|
+
], columns: 3 },
|
|
101
|
+
|
|
102
|
+
{ type: 'title', text: 'Spiegazione dei Formati di Compressione', level: 3 },
|
|
103
|
+
{ type: 'table', headers: ['Formato', 'Compressione', 'Casi d\'Uso', 'Compatibilità'], rows: [
|
|
104
|
+
['JPEG', 'Lossy 50-90%', 'Foto camera, contenuti editoriali', 'Universale (100%)'],
|
|
105
|
+
['PNG', 'Lossless 30-50%', 'Grafica, loghi, trasparenze', 'Universale (100%)'],
|
|
106
|
+
['WebP', 'Lossy/Lossless 25-35% in più', 'Web moderno, social network', '95% dei browser moderni'],
|
|
107
|
+
['AVIF', 'Lossy/Lossless miglioramento del 20%', 'Web di nuova generazione', 'Solo nuovi browser']
|
|
108
|
+
] },
|
|
109
|
+
|
|
110
|
+
{ type: 'card', title: 'Perché il WebP è il Futuro', html: 'Google ha sviluppato il WebP specificamente per il web. Offre una compressione superiore a JPEG e PNG, mantenendo o migliorando la qualità visiva. È più piccolo del 25-35% rispetto agli equivalenti JPEG. I browser moderni lo supportano al 95%.' },
|
|
111
|
+
|
|
112
|
+
{ type: 'title', text: 'Compressione Lossy vs Lossless', level: 3 },
|
|
113
|
+
{ type: 'comparative', items: [
|
|
114
|
+
{
|
|
115
|
+
title: 'Compressione Lossy',
|
|
116
|
+
description: 'JPG, WebP - Rimuove informazioni visive impercettibili',
|
|
117
|
+
icon: 'mdi:compress',
|
|
118
|
+
points: [
|
|
119
|
+
'Riduce del 70-90% il peso originale',
|
|
120
|
+
'Impercettibile all\'occhio umano se la qualità rimane >75%',
|
|
121
|
+
'Ideale per la fotografia realistica',
|
|
122
|
+
'Non consigliato per loghi o testi nitidi'
|
|
123
|
+
],
|
|
124
|
+
highlight: true
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
title: 'Compressione Lossless',
|
|
128
|
+
description: 'PNG, WebP lossless - Mantiene il 100% dei dati visivi',
|
|
129
|
+
icon: 'mdi:shield',
|
|
130
|
+
points: [
|
|
131
|
+
'Riduce del 20-50% il peso',
|
|
132
|
+
'Qualità perfetta, nessuna degradazione',
|
|
133
|
+
'Ideale per grafica, loghi, trasparenze',
|
|
134
|
+
'File più pesanti rispetto alla compressione Lossy'
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
], columns: 2 },
|
|
138
|
+
|
|
139
|
+
{ type: 'title', text: 'Impatto sulla SEO e sulla Conversione', level: 3 },
|
|
140
|
+
{ type: 'list', items: [
|
|
141
|
+
'<strong>Core Web Vitals:</strong> Google penalizza i siti lenti. Le immagini ottimizzate migliorano direttamente l\'LCP (Largest Contentful Paint).',
|
|
142
|
+
'<strong>Frequenza di Rimbalzo:</strong> Ogni secondo di ritardo = 7% di rimbalzo in più. Immagini più veloci = meno utenti che se ne vanno.',
|
|
143
|
+
'<strong>Posizionamento nella Ricerca:</strong> La velocità è un fattore di ranking. Ottimizzare le immagini aumenta il posizionamento.',
|
|
144
|
+
'<strong>Conversione:</strong> Tempi di caricamento più veloci = più conversioni. Gli studi mostrano +10% di conversione con l\'ottimizzazione.'
|
|
145
|
+
], icon: 'mdi:check' },
|
|
146
|
+
|
|
147
|
+
{ type: 'proscons', items: [
|
|
148
|
+
{
|
|
149
|
+
pro: 'Privacy totale: elaborazione 100% locale, nessun server cloud',
|
|
150
|
+
con: 'Richiede un browser con supporto Canvas API (è universale)'
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
pro: 'Il WebP è più piccolo del 25-35% rispetto al JPEG a parità di qualità',
|
|
154
|
+
con: 'Le vecchie versioni di Safari e IE non supportano il WebP (è disponibile il fallback)'
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
pro: 'Elaborazione istantanea di più immagini',
|
|
158
|
+
con: 'Le immagini molto grandi (>50MB) potrebbero richiedere un tempo di attesa'
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
pro: 'Ridimensionamento opzionale: riduce sia la risoluzione che la compressione',
|
|
162
|
+
con: 'Il ridimensionamento fa perdere informazioni - meglio ottimizzare la risoluzione alla fonte'
|
|
163
|
+
}
|
|
164
|
+
], proTitle: 'Vantaggi', conTitle: 'Limitazioni' },
|
|
165
|
+
|
|
166
|
+
{ type: 'diagnostic', variant: 'warning', title: 'Attenzione: La compressione eccessiva degrada', icon: 'mdi:alert', badge: 'Qualità', html: 'Mantieni la qualità >75% per la fotografia e >85% per i contenuti editoriali. Al di sotto, gli artefatti di compressione (macchie, banding) diventano visibili. Un\'immagine che sembra buona in miniatura può sembrare pessima ingrandita.' },
|
|
167
|
+
|
|
168
|
+
{ type: 'glossary', items: [
|
|
169
|
+
{
|
|
170
|
+
term: 'Compressione Lossy',
|
|
171
|
+
definition: 'Rimuove i dati visivi che l\'occhio umano percepisce come \"rumore\". Ideale per la fotografia. JPEG, WebP lossy, HEIC sono lossy.'
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
term: 'Compressione Lossless',
|
|
175
|
+
definition: 'Riduce le dimensioni senza perdere informazioni visive. PNG e WebP lossless. Ideale per grafica, loghi, trasparenze.'
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
term: 'Core Web Vitals (Google)',
|
|
179
|
+
definition: 'Metriche dell\'esperienza utente: LCP (velocità di caricamento), FID (latenza di interazione), CLS (stabilità visiva). Influenzano il ranking SEO.'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
term: 'WebP',
|
|
183
|
+
definition: 'Formato sviluppato da Google. 25-35% più piccolo del JPEG. Supportato dal 95% dei browser moderni (tutti tranne IE).'
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
term: 'Artefatti di Compressione',
|
|
187
|
+
definition: 'Difetti visivi causati da una compressione eccessiva: macchie, banding di colore, bordi sfocati. Impercettibili con qualità >75%.'
|
|
188
|
+
}
|
|
189
|
+
] },
|
|
190
|
+
|
|
191
|
+
{ type: 'message', title: 'Ottimizzazione Web Professionale', ariaLabel: 'Informazioni sull\'ottimizzazione delle immagini per la SEO', html: 'Non è vana estetica tecnica: comprimere le immagini è un investimento diretto nella user experience e nel ranking di Google. Ogni kilobyte conta sui dispositivi mobili. Il nostro strumento trasforma quello che prima richiedeva software professionali ($$$) in un processo gratuito di 3 clic.' },
|
|
192
|
+
|
|
193
|
+
{ type: 'title', text: 'Preparati per il Web Moderno', level: 3 },
|
|
194
|
+
{ type: 'paragraph', html: 'Usa la compressione intelligente e il formato WebP affinché la tua presenza online sia veloce, responsiva e competitiva nella ricerca. Qualità professionale, peso minimo, caricamento istantaneo.' }
|
|
195
|
+
];
|
|
196
|
+
|
|
197
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
198
|
+
'@context': 'https://schema.org',
|
|
199
|
+
'@type': 'FAQPage',
|
|
200
|
+
mainEntity: faq.map((item) => ({
|
|
201
|
+
'@type': 'Question',
|
|
202
|
+
name: item.question,
|
|
203
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
204
|
+
})),
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
const howToSchema: WithContext<HowTo> = {
|
|
208
|
+
'@context': 'https://schema.org',
|
|
209
|
+
'@type': 'HowTo',
|
|
210
|
+
name: title,
|
|
211
|
+
description,
|
|
212
|
+
step: howTo.map((step) => ({
|
|
213
|
+
'@type': 'HowToStep',
|
|
214
|
+
name: step.name,
|
|
215
|
+
text: step.text,
|
|
216
|
+
})),
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
220
|
+
'@context': 'https://schema.org',
|
|
221
|
+
'@type': 'SoftwareApplication',
|
|
222
|
+
name: title,
|
|
223
|
+
description,
|
|
224
|
+
applicationCategory: 'UtilitiesApplication',
|
|
225
|
+
operatingSystem: 'Web',
|
|
226
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
227
|
+
inLanguage: 'it',
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
export const content: ImageCompressorLocaleContent = {
|
|
231
|
+
slug,
|
|
232
|
+
title,
|
|
233
|
+
description,
|
|
234
|
+
ui,
|
|
235
|
+
seo,
|
|
236
|
+
faqTitle: "Domande Frequenti",
|
|
237
|
+
faq,
|
|
238
|
+
bibliographyTitle: "Riferimenti",
|
|
239
|
+
bibliography,
|
|
240
|
+
howTo,
|
|
241
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
242
|
+
};
|