@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 = 'online-image-compressor-reduce-file-size-no-quality-loss';
|
|
5
|
+
const title = 'オンライン画像圧縮ツール:画質を落とさずにファイルサイズを削減';
|
|
6
|
+
const description = 'JPG、PNG、WebP形式の写真を無料で最適化および圧縮。ファイルサイズを削減して、ウェブサイトの読み込み速度をローカルで向上させます。';
|
|
7
|
+
|
|
8
|
+
const ui: ImageCompressorUI = {
|
|
9
|
+
dropTitle: "画像を最適化",
|
|
10
|
+
dropSubtitle: "写真をドラッグして、瞬時にファイルサイズを削減します。",
|
|
11
|
+
settingsTitle: "圧縮設定",
|
|
12
|
+
qualityLabel: "視覚的画質",
|
|
13
|
+
widthLabel: "最大幅(ピクセル)",
|
|
14
|
+
convertToWebpLabel: "WebPに変換",
|
|
15
|
+
compressionLabel: "圧縮",
|
|
16
|
+
compressBtn: "画像を圧縮",
|
|
17
|
+
processingLabel: "処理中...",
|
|
18
|
+
resultsTitle: "最適化された画像",
|
|
19
|
+
originalSizeLabel: "元のサイズ",
|
|
20
|
+
newSizeLabel: "新しいサイズ",
|
|
21
|
+
reductionLabel: "削減量",
|
|
22
|
+
downloadBtn: "ダウンロード",
|
|
23
|
+
addMoreBtn: "さらに追加",
|
|
24
|
+
browseFilesBtn: "ファイルを選択",
|
|
25
|
+
processedFilesTitle: "処理済みファイル",
|
|
26
|
+
downloadAllBtn: "一括ダウンロード",
|
|
27
|
+
adjustThisImage: "この画像を調整",
|
|
28
|
+
downloadTitle: "ダウンロード",
|
|
29
|
+
maxWidthLabel: "最大幅 (px)",
|
|
30
|
+
closeBtn: "閉じる",
|
|
31
|
+
totalSavingsLabel: "合計削減量",
|
|
32
|
+
noSavings: "削減なし",
|
|
33
|
+
faqTitle: "よくある質問",
|
|
34
|
+
bibliographyTitle: "リファレンス"
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const faq: ImageCompressorLocaleContent['faq'] = [
|
|
38
|
+
{
|
|
39
|
+
question: "ロスレス(無劣化)圧縮はどのように機能しますか?",
|
|
40
|
+
answer: "不要なメタデータを削除し、ピクセルエンコーディングを最適化するアルゴリズムを使用しています。WebPを選択すると、従来の形式よりも高度な圧縮技術が使用されます。",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: "画像はサーバーにアップロードされますか?",
|
|
44
|
+
answer: "いいえ。すべての処理はブラウザ内で100%行われます(クライアントサイド)。写真はコンピュータの外に出ることはなく、絶対的なプライバシーが保証されます。",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
question: "なぜWebPに変換すべきなのですか?",
|
|
48
|
+
answer: "WebPはウェブの現代的な標準形式です。JPGやPNGよりも優れた画質を保ちながら、ファイルサイズを最大30%削減でき、ページの読み込み速度を向上させます。",
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const howTo: ImageCompressorLocaleContent['howTo'] = [
|
|
53
|
+
{
|
|
54
|
+
name: "画像をアップロード",
|
|
55
|
+
text: "圧縮したいファイル(JPG、PNG、またはWebP)をアップロードします。",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "画質を調整",
|
|
59
|
+
text: "スライダーを使用して、ファイルサイズと視覚的画質の完璧なバランスを見つけます(推奨:75〜85%)。",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: "リサイズ(任意)",
|
|
63
|
+
text: "画像が非常に大きい場合は、最大幅を指定して解像度を下げることができます。",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "結果をダウンロード",
|
|
67
|
+
text: "ダウンロードボタンを押して、最適化された画像を取得し、すぐに使用できるようにします。",
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
const bibliography: ImageCompressorLocaleContent['bibliography'] = [
|
|
72
|
+
{
|
|
73
|
+
name: "WebP: ウェブ用の画像形式",
|
|
74
|
+
url: "https://developers.google.com/speed/webp",
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "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: 'プロフェッショナルなウェブ画像最適化',
|
|
86
|
+
items: [
|
|
87
|
+
'高度なJPG、PNG、WebP圧縮',
|
|
88
|
+
'視覚的画質を維持しつつ、サイズを50〜80%削減',
|
|
89
|
+
'100%ローカル処理 - プライバシーを保証',
|
|
90
|
+
'Core Web VitalsとSEO順位の向上'
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
{ type: 'title', text: '画像最適化:ウェブ速度とCore Web Vitals', level: 2 },
|
|
94
|
+
{ type: 'paragraph', html: 'デジタル環境において、遅いウェブサイトはユーザーを失います。最適化されていない画像は、ウェブページの総容量の60〜70%を占めます。画像の最適化は、Googleの指標(LCP、CLS)と検索結果の順位を向上させるための第一歩です。' },
|
|
95
|
+
|
|
96
|
+
{ type: 'stats', items: [
|
|
97
|
+
{ value: '50-80%', label: '一般的な削減量', icon: 'mdi:trending-down' },
|
|
98
|
+
{ value: '100%', label: 'ローカルプライバシー', icon: 'mdi:lock' },
|
|
99
|
+
{ value: '+30%', label: 'JPGより高速', icon: 'mdi:speedometer' }
|
|
100
|
+
], columns: 3 },
|
|
101
|
+
|
|
102
|
+
{ type: 'title', text: '圧縮形式の解説', level: 3 },
|
|
103
|
+
{ type: 'table', headers: ['形式', '圧縮方法', '用途', '互換性'], rows: [
|
|
104
|
+
['JPEG', '非可逆 50-90%', '写真、編集コンテンツ', 'ユニバーサル (100%)'],
|
|
105
|
+
['PNG', '可逆 30-50%', 'グラフィックス、ロゴ、透過画像', 'ユニバーサル (100%)'],
|
|
106
|
+
['WebP', '非可逆/可逆 さらに25-35%削減', '現代のウェブ、SNS', '95%の現代のブラウザ'],
|
|
107
|
+
['AVIF', '非可逆/可逆 さらに20%向上', '次世代ウェブ', '最新ブラウザのみ']
|
|
108
|
+
] },
|
|
109
|
+
|
|
110
|
+
{ type: 'card', title: 'WebPが未来である理由', html: 'Googleはウェブ向けにWebPを開発しました。JPEGやPNGよりも優れた圧縮を提供しつつ、視覚的画質を維持または向上させます。同等のJPEGよりも25〜35%軽量です。現代のブラウザの95%が対応しています。' },
|
|
111
|
+
|
|
112
|
+
{ type: 'title', text: '非可逆圧縮 vs 可逆圧縮', level: 3 },
|
|
113
|
+
{ type: 'comparative', items: [
|
|
114
|
+
{
|
|
115
|
+
title: '非可逆圧縮 (Lossy)',
|
|
116
|
+
description: 'JPG, WebP - 人の目には見えない視覚情報を削除',
|
|
117
|
+
icon: 'mdi:compress',
|
|
118
|
+
points: [
|
|
119
|
+
'元のサイズの70〜90%を削減',
|
|
120
|
+
'画質が75%以上に保たれていれば、人の目には判別不能',
|
|
121
|
+
'実写写真に最適',
|
|
122
|
+
'ロゴや鮮明なテキストには不向き'
|
|
123
|
+
],
|
|
124
|
+
highlight: true
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
title: '可逆圧縮 (Lossless)',
|
|
128
|
+
description: 'PNG, WebPロスレス - 100%の視覚データを維持',
|
|
129
|
+
icon: 'mdi:shield',
|
|
130
|
+
points: [
|
|
131
|
+
'サイズを20〜50%削減',
|
|
132
|
+
'劣化のない完璧な画質',
|
|
133
|
+
'グラフィックス、ロゴ、透過画像に最適',
|
|
134
|
+
'非可逆圧縮よりもファイルサイズは大きくなる'
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
], columns: 2 },
|
|
138
|
+
|
|
139
|
+
{ type: 'title', text: 'SEOとコンバージョンへの影響', level: 3 },
|
|
140
|
+
{ type: 'list', items: [
|
|
141
|
+
'<strong>Core Web Vitals:</strong> Googleは遅いサイトを評価しません。最適化された画像はLCP(Largest Contentful Paint)を直接改善します。',
|
|
142
|
+
'<strong>直帰率:</strong> 1秒の遅延で直帰率が7%増加します。高速な画像表示はユーザー離脱を防ぎます。',
|
|
143
|
+
'<strong>検索順位:</strong> 速度はランキング要因です。画像最適化はSEO順位を押し上げます。',
|
|
144
|
+
'<strong>コンバージョン:</strong> 読み込みが速いほど、コンバージョン率は向上します。最適化によりコンバージョンが10%向上するという研究結果もあります。'
|
|
145
|
+
], icon: 'mdi:check' },
|
|
146
|
+
|
|
147
|
+
{ type: 'proscons', items: [
|
|
148
|
+
{
|
|
149
|
+
pro: '完全なプライバシー:サーバー不要の100%ローカル処理',
|
|
150
|
+
con: 'Canvas APIをサポートするブラウザが必要(主要ブラウザはすべて対応)'
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
pro: 'WebPは同じ画質でもJPEGより25〜35%軽量',
|
|
154
|
+
con: '古いSafariやIEはWebP非対応(代替手段あり)'
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
pro: '複数画像の即時処理',
|
|
158
|
+
con: '非常に大きな画像(50MB以上)は処理に時間がかかる場合があります'
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
pro: '任意のリサイズ機能:圧縮に加えて解像度の縮小も可能',
|
|
162
|
+
con: 'リサイズは情報を失います - 元の解像度で最適化するのがベストです'
|
|
163
|
+
}
|
|
164
|
+
], proTitle: 'メリット', conTitle: '制限事項' },
|
|
165
|
+
|
|
166
|
+
{ type: 'diagnostic', variant: 'warning', title: '注意:過度な圧縮は画質を損なう', icon: 'mdi:alert', badge: '画質', html: '写真は75%以上、文字を含む画像は85%以上の画質を維持してください。それ以下になると、圧縮ノイズ(ブロックノイズや色にじみ)が目立つようになります。サムネイルで綺麗に見えても、拡大すると劣化している場合があります。' },
|
|
167
|
+
|
|
168
|
+
{ type: 'glossary', items: [
|
|
169
|
+
{
|
|
170
|
+
term: '非可逆圧縮 (Lossy)',
|
|
171
|
+
definition: '人の目が「ノイズ」として認識する視覚データを取り除きます。写真に最適です。JPEGやWebPの非可逆モードが該当します。'
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
term: '可逆圧縮 (Lossless)',
|
|
175
|
+
definition: '視覚情報を一切失わずにサイズを削減します。PNGやWebPのロスレスモードが該当します。ロゴや図解に最適です。'
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
term: 'Core Web Vitals (Google)',
|
|
179
|
+
definition: 'ユーザー体験を測る指標。LCP(読み込み速度)、FID(応答性)、CLS(視覚的安定性)があり、SEOに影響します。'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
term: 'WebP',
|
|
183
|
+
definition: 'Googleが開発した次世代画像形式。JPEGより25〜35%軽量。IE以外の主要な現代ブラウザでサポートされています。'
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
term: '圧縮ノイズ (Artifacts)',
|
|
187
|
+
definition: '過度な圧縮によって生じる画像の乱れ(斑点、色の縞模様、輪郭のボケ)。画質75%以上ではほとんど目立ちません。'
|
|
188
|
+
}
|
|
189
|
+
] },
|
|
190
|
+
|
|
191
|
+
{ type: 'message', title: 'プロフェッショナルなウェブ最適化', ariaLabel: 'SEOのための画像最適化に関する情報', html: '画像圧縮は単なる技術的なこだわりではなく、ユーザー体験とGoogle順位への直接的な投資です。モバイルでは数キロバイトの差が重要になります。かつては高価なプロ用ソフトを必要とした処理が、このツールによりわずか3クリックで無料で行えます。' },
|
|
192
|
+
|
|
193
|
+
{ type: 'title', text: '現代のウェブ環境への対応', level: 3 },
|
|
194
|
+
{ type: 'paragraph', html: '高度な圧縮技術とWebP形式を活用して、高速でレスポンシブな、検索に強いサイトを実現しましょう。プロ仕様の品質を保ち、最小限の容量で、瞬時に読み込まれる体験を。' }
|
|
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: 'ja',
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
export const content: ImageCompressorLocaleContent = {
|
|
231
|
+
slug,
|
|
232
|
+
title,
|
|
233
|
+
description,
|
|
234
|
+
ui,
|
|
235
|
+
seo,
|
|
236
|
+
faqTitle: "よくある質問",
|
|
237
|
+
faq,
|
|
238
|
+
bibliographyTitle: "リファレンス",
|
|
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 = 'online-image-compressor-reduce-file-size-no-quality-loss';
|
|
5
|
+
const title = '온라인 이미지 압축기: 품질 저하 없이 파일 용량 감소';
|
|
6
|
+
const description = 'JPG, PNG 및 WebP 사진을 무료로 최적화하고 압축하세요. 파일 크기를 줄여 로컬에서 웹 로딩 속도를 향상시킵니다.';
|
|
7
|
+
|
|
8
|
+
const ui: ImageCompressorUI = {
|
|
9
|
+
dropTitle: "이미지 최적화",
|
|
10
|
+
dropSubtitle: "사진을 드래그하여 즉시 용량을 줄이세요.",
|
|
11
|
+
settingsTitle: "압축 설정",
|
|
12
|
+
qualityLabel: "시각적 품질",
|
|
13
|
+
widthLabel: "최대 너비 (픽셀)",
|
|
14
|
+
convertToWebpLabel: "WebP로 변환",
|
|
15
|
+
compressionLabel: "압축",
|
|
16
|
+
compressBtn: "이미지 압축",
|
|
17
|
+
processingLabel: "처리 중...",
|
|
18
|
+
resultsTitle: "최적화된 이미지",
|
|
19
|
+
originalSizeLabel: "원본 크기",
|
|
20
|
+
newSizeLabel: "새 크기",
|
|
21
|
+
reductionLabel: "절감액",
|
|
22
|
+
downloadBtn: "다운로드",
|
|
23
|
+
addMoreBtn: "추가하기",
|
|
24
|
+
browseFilesBtn: "파일 찾기",
|
|
25
|
+
processedFilesTitle: "처리된 파일",
|
|
26
|
+
downloadAllBtn: "모두 다운로드",
|
|
27
|
+
adjustThisImage: "이 이미지 조정",
|
|
28
|
+
downloadTitle: "다운로드",
|
|
29
|
+
maxWidthLabel: "최대 너비 (px)",
|
|
30
|
+
closeBtn: "닫기",
|
|
31
|
+
totalSavingsLabel: "총 절감량",
|
|
32
|
+
noSavings: "순 절감액 없음",
|
|
33
|
+
faqTitle: "자주 묻는 질문",
|
|
34
|
+
bibliographyTitle: "참고 문헌"
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const faq: ImageCompressorLocaleContent['faq'] = [
|
|
38
|
+
{
|
|
39
|
+
question: "무손실 압축은 어떻게 작동하나요?",
|
|
40
|
+
answer: "불필요한 메타데이터를 제거하고 픽셀 인코딩을 최적화하는 알고리즘을 사용합니다. WebP를 선택하면 기존 형식보다 더 발전된 압축 기술이 사용됩니다.",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: "제 이미지가 서버에 업로드되나요?",
|
|
44
|
+
answer: "아니요. 모든 처리는 브라우저에서 100% 이루어집니다 (Client-Side). 사진은 컴퓨터를 떠나지 않으므로 절대적인 프라이버시가 보장됩니다.",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
question: "왜 WebP로 변환해야 하나요?",
|
|
48
|
+
answer: "WebP는 웹을 위한 현대적인 표준 형식입니다. JPG 및 PNG보다 우수한 품질을 제공하면서도 용량은 최대 30% 적어 페이지 로딩 속도를 높여줍니다.",
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const howTo: ImageCompressorLocaleContent['howTo'] = [
|
|
53
|
+
{
|
|
54
|
+
name: "이미지 업로드",
|
|
55
|
+
text: "압축하려는 파일(JPG, PNG 또는 WebP)을 업로드하세요.",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "품질 조정",
|
|
59
|
+
text: "슬라이더를 사용하여 파일 크기와 시각적 품질 사이의 완벽한 균형을 찾으세요(권장: 75 85%).",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: "크기 조정 (선택 사항)",
|
|
63
|
+
text: "이미지가 매우 큰 경우 최대 너비를 지정하여 해상도를 줄일 수 있습니다.",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "결과 다운로드",
|
|
67
|
+
text: "다운로드 버튼을 눌러 바로 사용할 수 있는 최적화된 이미지를 받으세요.",
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
const bibliography: ImageCompressorLocaleContent['bibliography'] = [
|
|
72
|
+
{
|
|
73
|
+
name: "WebP: 웹을 위한 이미지 형식",
|
|
74
|
+
url: "https://developers.google.com/speed/webp",
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "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: '전문적인 웹 이미지 최적화',
|
|
86
|
+
items: [
|
|
87
|
+
'지능형 JPG, PNG 및 WebP 압축',
|
|
88
|
+
'시각적 품질을 유지하면서 용량 50-80% 감소',
|
|
89
|
+
'100% 로컬 처리 - 개인정보 보호 보장',
|
|
90
|
+
'Core Web Vitals 및 SEO 순위 향상'
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
{ type: 'title', text: '이미지 최적화: 웹 속도 및 Core Web Vitals', level: 2 },
|
|
94
|
+
{ type: 'paragraph', html: '디지털 즉각성의 시대에 느린 웹사이트는 사용자를 잃습니다. 최적화되지 않은 이미지는 웹 페이지 전체 용량의 60-70%를 차지합니다. 이미지를 최적화하는 것은 Google 메트릭(LCP, CLS)과 검색 결과 순위를 향상시키는 첫 번째 단계입니다.' },
|
|
95
|
+
|
|
96
|
+
{ type: 'stats', items: [
|
|
97
|
+
{ value: '50-80%', label: '일반적인 용량 감소', icon: 'mdi:trending-down' },
|
|
98
|
+
{ value: '100%', label: '로컬 프라이버시', icon: 'mdi:lock' },
|
|
99
|
+
{ value: '+30%', label: 'JPG보다 빠름', icon: 'mdi:speedometer' }
|
|
100
|
+
], columns: 3 },
|
|
101
|
+
|
|
102
|
+
{ type: 'title', text: '압축 형식 설명', level: 3 },
|
|
103
|
+
{ type: 'table', headers: ['형식', '압축 방식', '활용 사례', '호환성'], rows: [
|
|
104
|
+
['JPEG', '손실 압축 50-90%', '카메라 사진, 편집 콘텐츠', '유니버설 (100%)'],
|
|
105
|
+
['PNG', '무손실 압축 30-50%', '그래픽, 로고, 투명도', '유니버설 (100%)'],
|
|
106
|
+
['WebP', '손실/무손실 25-35% 추가 절감', '현대식 웹, 소셜 네트워크', '95% 현대식 브라우저'],
|
|
107
|
+
['AVIF', '손실/무손실 20% 향상', '차세대 웹', '최신 브라우저 전용']
|
|
108
|
+
] },
|
|
109
|
+
|
|
110
|
+
{ type: 'card', title: 'WebP가 미래인 이유', html: 'Google은 웹을 위해 특별히 WebP를 개발했습니다. JPEG 및 PNG보다 우수한 압축률을 제공하면서 시각적 품질을 유지하거나 향상시킵니다. 동일한 JPEG보다 25-35% 작습니다. 현대식 브라우저의 95%가 이를 지원합니다.' },
|
|
111
|
+
|
|
112
|
+
{ type: 'title', text: '손실 압축 vs 무손실 압축', level: 3 },
|
|
113
|
+
{ type: 'comparative', items: [
|
|
114
|
+
{
|
|
115
|
+
title: '손실 압축 (Lossy)',
|
|
116
|
+
description: 'JPG, WebP - 인지할 수 없는 시각 정보를 제거',
|
|
117
|
+
icon: 'mdi:compress',
|
|
118
|
+
points: [
|
|
119
|
+
'원본 용량의 70-90% 감소',
|
|
120
|
+
'품질이 75% 이상 유지되면 육안으로 식별 불가',
|
|
121
|
+
'사실적인 사진에 이상적',
|
|
122
|
+
'로고나 선명한 텍스트에는 권장하지 않음'
|
|
123
|
+
],
|
|
124
|
+
highlight: true
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
title: '무손실 압축 (Lossless)',
|
|
128
|
+
description: 'PNG, WebP 무손실 - 시각 데이터 100% 유지',
|
|
129
|
+
icon: 'mdi:shield',
|
|
130
|
+
points: [
|
|
131
|
+
'용량 20-50% 감소',
|
|
132
|
+
'완벽한 품질, 저하 없음',
|
|
133
|
+
'그래픽, 로고, 투명도에 이상적',
|
|
134
|
+
'손실 압축보다 파일이 무거움'
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
], columns: 2 },
|
|
138
|
+
|
|
139
|
+
{ type: 'title', text: 'SEO 및 전환율에 미치는 영향', level: 3 },
|
|
140
|
+
{ type: 'list', items: [
|
|
141
|
+
'<strong>Core Web Vitals:</strong> Google은 느린 사이트에 불이익을 줍니다. 최적화된 이미지는 LCP(Largest Contentful Paint)를 직접 개선합니다.',
|
|
142
|
+
'<strong>이탈률:</strong> 1초의 지연마다 이탈률 7% 증가. 빠른 이미지는 이탈 사용자를 줄여줍니다.',
|
|
143
|
+
'<strong>검색 순위:</strong> 속도는 순위 결정 요소입니다. 이미지 최적화는 순위를 높여줍니다.',
|
|
144
|
+
'<strong>전환율:</strong> 빠른 로딩 시간은 더 많은 전환으로 이어집니다. 연구에 따르면 최적화를 통해 전환율이 10% 향상됩니다.'
|
|
145
|
+
], icon: 'mdi:check' },
|
|
146
|
+
|
|
147
|
+
{ type: 'proscons', items: [
|
|
148
|
+
{
|
|
149
|
+
pro: '완전한 프라이버시: 100% 로컬 처리, 클라우드 서버 없음',
|
|
150
|
+
con: 'Canvas API 지원 브라우저 필요 (범용적임)'
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
pro: 'WebP는 동일 품질에서 JPEG보다 25-35% 작음',
|
|
154
|
+
con: '구형 Safari 및 IE는 WebP 미지원 (대체 수단 제공)'
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
pro: '여러 이미지 즉시 처리',
|
|
158
|
+
con: '매우 큰 이미지(50MB 이상)는 대기 시간이 필요할 수 있음'
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
pro: '선택적 크기 조정: 압축과 더불어 해상도 감소 가능',
|
|
162
|
+
con: '크기 조정은 정보를 잃음 - 원본에서 해상도를 최적화하는 것이 가장 좋음'
|
|
163
|
+
}
|
|
164
|
+
], proTitle: '장점', conTitle: '제한 사항' },
|
|
165
|
+
|
|
166
|
+
{ type: 'diagnostic', variant: 'warning', title: '주의: 과도한 압축은 품질 저하를 초래', icon: 'mdi:alert', badge: '품질', html: '사진의 경우 품질 >75%, 편집 콘텐츠의 경우 >85%를 유지하세요. 그 미만에서는 압축 아티팩트(얼룩, 밴딩 현상)가 보일 수 있습니다. 미리보기에서 좋아 보이는 이미지가 크게 보면 나빠 보일 수 있습니다.' },
|
|
167
|
+
|
|
168
|
+
{ type: 'glossary', items: [
|
|
169
|
+
{
|
|
170
|
+
term: '손실 압축 (Lossy)',
|
|
171
|
+
definition: '인간의 눈이 \"노이즈\"로 인식하는 시각 데이터를 제거합니다. 사진에 이상적입니다. JPEG, 손실 WebP, HEIC가 이에 해당합니다.'
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
term: '무손실 압축 (Lossless)',
|
|
175
|
+
definition: '시각 정보 손실 없이 크기를 줄입니다. PNG 및 무손실 WebP가 이에 해당합니다. 그래픽, 로고, 투명도에 이상적입니다.'
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
term: 'Core Web Vitals (Google)',
|
|
179
|
+
definition: '사용자 경험 지표: LCP(로딩 속도), FID(상호작용 지연), CLS(시각적 안정성). SEO 순위에 영향을 미칩니다.'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
term: 'WebP',
|
|
183
|
+
definition: 'Google에서 개발한 형식. JPEG보다 25-35% 작음. 구형 IE를 제외한 현대식 브라우저의 95%에서 지원.'
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
term: '압축 아티팩트 (Artifacts)',
|
|
187
|
+
definition: '과도한 압축으로 인한 시각적 결함: 얼룩, 색상 밴딩, 흐릿한 가장자리. 품질 75% 이상에서는 거의 보이지 않음.'
|
|
188
|
+
}
|
|
189
|
+
] },
|
|
190
|
+
|
|
191
|
+
{ type: 'message', title: '전문적인 웹 최적화', ariaLabel: 'SEO를 위한 이미지 최적화 정보', html: '단순한 기술적 허영심이 아닙니다. 이미지를 압축하는 것은 사용자 경험과 Google 순위에 대한 직접적인 투자입니다. 모바일에서는 모든 킬로바이트가 중요합니다. 당사 도구는 전문 소프트웨어($$$)가 필요했던 작업을 클릭 3번으로 끝나는 무료 프로세스로 바꿔줍니다.' },
|
|
192
|
+
|
|
193
|
+
{ type: 'title', text: '현대적인 웹을 위한 준비', level: 3 },
|
|
194
|
+
{ type: 'paragraph', html: '지능형 압축과 WebP 형식을 사용하여 온라인 인지도를 빠르고 반응적이며 검색 경쟁력 있게 만드세요. 전문적인 품질, 최소 용량, 즉각적인 로딩.' }
|
|
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: 'ko',
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
export const content: ImageCompressorLocaleContent = {
|
|
231
|
+
slug,
|
|
232
|
+
title,
|
|
233
|
+
description,
|
|
234
|
+
ui,
|
|
235
|
+
seo,
|
|
236
|
+
faqTitle: "자주 묻는 질문",
|
|
237
|
+
faq,
|
|
238
|
+
bibliographyTitle: "참고 문헌",
|
|
239
|
+
bibliography,
|
|
240
|
+
howTo,
|
|
241
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
242
|
+
};
|