1+ <!DOCTYPE html>
2+ < html lang ="ja ">
3+ < head >
4+ < meta charset ="UTF-8 ">
5+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
6+ < title > Image to Pixel Art Converter</ title >
7+ < link rel ="stylesheet " href ="src/css/main.css ">
8+ </ head >
9+ < body >
10+ < div class ="container ">
11+ < header class ="header ">
12+ < h1 class ="title "> Image to Pixel Art</ h1 >
13+ < p class ="subtitle "> 画像をピクセルアート風に変換</ p >
14+ </ header >
15+
16+ < main class ="main-content ">
17+ <!-- ファイルアップロードエリア -->
18+ < section class ="upload-section ">
19+ < div class ="upload-area " id ="uploadArea ">
20+ < div class ="upload-content ">
21+ < svg class ="upload-icon " width ="64 " height ="64 " viewBox ="0 0 24 24 " fill ="none " stroke ="currentColor " stroke-width ="2 ">
22+ < path d ="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4 "> </ path >
23+ < polyline points ="17 8 12 3 7 8 "> </ polyline >
24+ < line x1 ="12 " y1 ="3 " x2 ="12 " y2 ="15 "> </ line >
25+ </ svg >
26+ < p class ="upload-text "> 画像をドラッグ&ドロップ< br > または</ p >
27+ < button class ="upload-button " id ="uploadButton "> ファイルを選択</ button >
28+ < input type ="file " id ="fileInput " class ="file-input " accept ="image/* " hidden >
29+ < p class ="upload-info "> 対応形式: JPEG, PNG, GIF, WebP</ p >
30+ </ div >
31+ </ div >
32+ </ section >
33+
34+ <!-- 設定パネル -->
35+ < section class ="settings-section " id ="settingsSection " style ="display: none; ">
36+ < h2 class ="section-title "> 変換設定</ h2 >
37+ < div class ="settings-grid ">
38+ < div class ="setting-group ">
39+ < label class ="setting-label "> 色数</ label >
40+ < div class ="setting-control ">
41+ < input type ="range " id ="colorCount " class ="slider " min ="2 " max ="256 " value ="8 ">
42+ < span class ="slider-value " id ="colorCountValue "> 8</ span >
43+ </ div >
44+ </ div >
45+
46+ < div class ="setting-group ">
47+ < label class ="setting-label "> ピクセルサイズ</ label >
48+ < div class ="setting-control ">
49+ < input type ="range " id ="pixelSize " class ="slider " min ="1 " max ="32 " value ="8 ">
50+ < span class ="slider-value " id ="pixelSizeValue "> 8</ span >
51+ </ div >
52+ </ div >
53+
54+ < div class ="setting-group ">
55+ < label class ="setting-label "> 出力幅 (px)</ label >
56+ < div class ="setting-control ">
57+ < input type ="number " id ="outputWidth " class ="number-input " min ="32 " max ="2048 " value ="512 ">
58+ </ div >
59+ </ div >
60+
61+ < div class ="setting-group ">
62+ < label class ="setting-label "> ディザリング</ label >
63+ < div class ="setting-control ">
64+ < select id ="dithering " class ="select ">
65+ < option value ="none "> なし</ option >
66+ < option value ="floyd-steinberg "> Floyd-Steinberg</ option >
67+ < option value ="ordered "> Ordered (Bayer)</ option >
68+ < option value ="atkinson "> Atkinson</ option >
69+ </ select >
70+ </ div >
71+ </ div >
72+ </ div >
73+
74+ < div class ="button-group ">
75+ < button class ="btn btn-primary " id ="convertButton "> 変換開始</ button >
76+ < button class ="btn btn-secondary " id ="resetButton "> リセット</ button >
77+ </ div >
78+ </ section >
79+
80+ <!-- プレビューエリア -->
81+ < section class ="preview-section " id ="previewSection " style ="display: none; ">
82+ < h2 class ="section-title "> 変換結果</ h2 >
83+ < div class ="preview-container ">
84+ < div class ="preview-box ">
85+ < h3 class ="preview-title "> 元の画像</ h3 >
86+ < canvas id ="originalCanvas " class ="preview-canvas "> </ canvas >
87+ </ div >
88+ < div class ="preview-box ">
89+ < h3 class ="preview-title "> 変換後</ h3 >
90+ < canvas id ="resultCanvas " class ="preview-canvas "> </ canvas >
91+ < div class ="preview-actions ">
92+ < button class ="btn btn-success " id ="downloadButton "> ダウンロード</ button >
93+ </ div >
94+ </ div >
95+ </ div >
96+ </ section >
97+
98+ <!-- プログレス表示 -->
99+ < div class ="progress-overlay " id ="progressOverlay " style ="display: none; ">
100+ < div class ="progress-content ">
101+ < div class ="spinner "> </ div >
102+ < p class ="progress-text "> 変換処理中...</ p >
103+ < div class ="progress-bar ">
104+ < div class ="progress-fill " id ="progressBar "> </ div >
105+ </ div >
106+ </ div >
107+ </ div >
108+ </ main >
109+
110+ < footer class ="footer ">
111+ < p > © 2024 Image to Pixel Art Converter</ p >
112+ </ footer >
113+ </ div >
114+
115+ < script src ="src/js/app.js "> </ script >
116+ </ body >
117+ </ html >
0 commit comments