gearmachine commited on
Commit
6014789
·
1 Parent(s): 68887f8

feat: ダウンロードボタンの動作修正と表示設定の反映

Browse files

- 画像とJSONのダウンロードボタンを機能させるための実装を追加
- 表示設定(手・顔の表示チェック)を画像に反映する処理を追加
- GradioのFileコンポーネントを使用してダウンロード機能を実装
- ダウンロード失敗時のエラーハンドリングを追加

issues/023_詳細モード矩形非表示修正.md ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Issue 023: 詳細モード矩形非表示修正 🎨💫
2
+
3
+ ## 📋 問題概要
4
+
5
+ 詳細モードでは手や顔の矩形を表示せず、キーポイントを直接操作できるようにする必要があるが、現在矩形が表示されてしまっている。
6
+
7
+ ## 🎯 解決目標
8
+
9
+ 1. **詳細モードで矩形非表示**: 手と顔の矩形を描画しない
10
+ 2. **キーポイント直接操作**: 個別のキーポイントを直接ドラッグ可能に
11
+ 3. **モード切替時の再描画**: 簡易モード↔詳細モード切替時に即座に反映
12
+
13
+ ## 🔧 実装内容
14
+
15
+ ### static/pose_editor.js の修正
16
+ - `drawPose()` 関数で編集モードをチェック
17
+ - 詳細モードの場合は矩形描画をスキップ
18
+ - キーポイントのクリック判定を追加
19
+
20
+ ## ✅ 完了条件
21
+
22
+ - [ ] 詳細モードで矩形が表示されない
23
+ - [ ] 詳細モードでキーポイントを直接ドラッグできる
24
+ - [ ] モード切替が即座に反映される
25
+ - [ ] refs/dwpose_modifier の実装と同等の動作
26
+
27
+ ## 📝 参考資料
28
+
29
+ - refs/dwpose_modifier/static/pose_editor.js の詳細モード実装
30
+ - Issue #013: 詳細モード個別編集
31
+
32
+ ## 🏷️ タグ
33
+
34
+ `bug` `ui` `canvas` `editing-mode`
issues/024_JSONロード機能実装.md ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Issue 024: JSONロード機能実装 📁💖
2
+
3
+ ## 📋 問題概要
4
+
5
+ 現在、JSONファイルをロードしてポーズデータを読み込む機能が実装されていない。エクスポートしたJSONを再度読み込んで編集を続行できるようにする必要がある。
6
+
7
+ ## 🎯 解決目標
8
+
9
+ 1. **JSONファイルアップロード**: Gradioコンポーネントの追加
10
+ 2. **データ検証**: アップロードされたJSONの形式チェック
11
+ 3. **ポーズデータ適用**: 読み込んだデータをCanvasに反映
12
+ 4. **エラーハンドリング**: 不正なJSONに対する適切なエラー通知
13
+
14
+ ## 🔧 実装内容
15
+
16
+ ### app.py の修正
17
+ - JSONアップロード用のgr.Fileコンポーネント追加
18
+ - JSONパース&検証関数の実装
19
+ - pose_dataへの適用
20
+
21
+ ### utils/ の追加機能
22
+ - JSONバリデーション関数
23
+ - DWPoseフォーマットチェック
24
+
25
+ ## ✅ 完了条件
26
+
27
+ - [ ] JSONファイルアップロードUIが追加される
28
+ - [ ] エクスポートしたJSONを読み込める
29
+ - [ ] 不正なJSONに対してエラー通知が表示される
30
+ - [ ] 読み込み後、即座にCanvasに反映される
31
+
32
+ ## 📝 参考資料
33
+
34
+ - refs/dwpose_modifier のJSONロード実装
35
+ - エクスポート形式との互換性確保
36
+
37
+ ## 🏷️ タグ
38
+
39
+ `feature` `json` `import` `data-management`
issues/025_出力UI非表示改修.md ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Issue 025: 出力UI非表示改修 🎨✨
2
+
3
+ ## 📋 問題概要
4
+
5
+ 現在の出力部分に不要なUI要素が表示されている:
6
+ - ポーズデータJSON表示が不要(内部的に使用するなら非表示にすべき)
7
+ - 画像の表示も不要(ダウンロードのみで十分)
8
+
9
+ ## 🎯 解決目標
10
+
11
+ 1. **JSON表示を非表示に**: gr.JSON コンポーネントを visible=False に
12
+ 2. **画像表示を非表示に**: gr.Image コンポーネントを削除またはvisible=False
13
+ 3. **ダウンロードボタンのみ残す**: 画像とJSONのダウンロードボタンは維持
14
+ 4. **UIのスッキリ化**: 不要な要素を削除してシンプルに
15
+
16
+ ## 🔧 実装内容
17
+
18
+ ### app.py の修正
19
+ ```python
20
+ # 現在
21
+ output_json = gr.JSON(label="ポーズデータ (JSON)", elem_id="output_json")
22
+ output_image = gr.Image(label="ポーズ画像", type="pil", elem_id="output_image")
23
+
24
+ # 修正後
25
+ output_json = gr.JSON(visible=False) # 内部利用のみ
26
+ # output_image は削除
27
+ ```
28
+
29
+ ## ✅ 完了条件
30
+
31
+ - [ ] ポーズデータJSONが表示されない
32
+ - [ ] ポーズ画像のプレビューが表示されない
33
+ - [ ] ダウンロードボタンは正常に機能する
34
+ - [ ] UIがスッキリして使いやすい
35
+
36
+ ## 📝 参考資料
37
+
38
+ - Gradio visibility設定
39
+ - 内部データとUIの分離
40
+
41
+ ## 🏷️ タグ
42
+
43
+ `ui` `ux` `cleanup` `visibility`
issues/026_ダウンロードファイル名改善.md ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Issue 026: ダウンロードファイル名改善 📁💫
2
+
3
+ ## 📋 問題概要
4
+
5
+ 現在のダウンロード機能では、ファイル名が適切でない:
6
+ - 機能名が含まれていない
7
+ - 日時情報がない
8
+ - どのファイルが何なのか分かりづらい
9
+
10
+ ## 🎯 解決目標
11
+
12
+ 1. **わかりやすいファイル名**: 機能+日時のフォーマット
13
+ 2. **画像ファイル名**: 例)`dwpose_edit_20250112_143052.png`
14
+ 3. **JSONファイル名**: 例)`dwpose_data_20250112_143052.json`
15
+ 4. **タイムスタンプ**: YYYYMMDD_HHMMSS形式
16
+
17
+ ## 🔧 実装内容
18
+
19
+ ### utils/export_utils.py の修正
20
+ ```python
21
+ from datetime import datetime
22
+
23
+ def get_timestamp_filename(prefix, extension):
24
+ timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
25
+ return f"{prefix}_{timestamp}.{extension}"
26
+ ```
27
+
28
+ ### Gradioでのファイル名指定
29
+ - gr.File コンポーネントでファイル名を指定
30
+ - ダウンロード時に適切なファイル名を設定
31
+
32
+ ## ✅ 完了条件
33
+
34
+ - [ ] 画像ダウンロード時のファイル名が`dwpose_edit_YYYYMMDD_HHMMSS.png`
35
+ - [ ] JSONダウンロード時のファイル名が`dwpose_data_YYYYMMDD_HHMMSS.json`
36
+ - [ ] タイムスタンプが正しく生成される
37
+ - [ ] ファイル名から内容が推測できる
38
+
39
+ ## 📝 参考資料
40
+
41
+ - Python datetime モジュール
42
+ - Gradio ファイルダウンロード機能
43
+
44
+ ## 🏷️ タグ
45
+
46
+ `feature` `ux` `export` `filename`
issues/027_画像背景表示実装.md ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Issue 027: 画像背景表示実装 🖼️💖
2
+
3
+ ## 📋 問題概要
4
+
5
+ 画像をロードした後、Canvasに画像が背景として表示されない。refs/dwpose_modifierでは、アップロードした画像を暗くして背景に表示し、その上にポーズを描画している。
6
+
7
+ ## 🎯 解決目標
8
+
9
+ 1. **背景画像表示**: アップロードした画像をCanvas背景に表示
10
+ 2. **暗く表示**: 画像を暗くしてポーズが見やすいように
11
+ 3. **アスペクト比維持**: 長辺をCanvasサイズに合わせて表示
12
+ 4. **正方形以外対応**: 縦長・横長画像にも対応
13
+
14
+ ## 🔧 実装内容
15
+
16
+ ### static/pose_editor.js の修正
17
+ ```javascript
18
+ // 背景画像描画関数
19
+ function drawBackgroundImage(image) {
20
+ // 画像を暗くして描画
21
+ ctx.globalAlpha = 0.3; // 透明度設定
22
+
23
+ // アスペクト比を保持してCanvas内に収める
24
+ const scale = Math.min(canvas.width / image.width, canvas.height / image.height);
25
+ // ... 描画処理
26
+ }
27
+ ```
28
+
29
+ ### 画像データの受け渡し
30
+ - Gradio から JavaScript への画像データ転送
31
+ - Base64エンコーディングまたはURL経由
32
+
33
+ ## ✅ 完了条件
34
+
35
+ - [ ] アップロードした画像がCanvas背景に表示される
36
+ - [ ] 画像が適切に暗く表示される
37
+ - [ ] アスペクト比が保持される
38
+ - [ ] 正方形でない画像も正しく表示される
39
+ - [ ] refs/dwpose_modifier と同等の表示
40
+
41
+ ## 📝 参考資料
42
+
43
+ - refs/dwpose_modifier/static/pose_editor.js の背景画像実装
44
+ - HTML5 Canvas globalAlpha プロパティ
45
+ - 画像のアスペクト比計算
46
+
47
+ ## 🏷️ タグ
48
+
49
+ `bug` `canvas` `image` `background`
issues/028_ダウンロードボタン動作修正.md ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Issue 028: ダウンロードボタン動作修正 🔧💫
2
+
3
+ ## 📋 問題概要
4
+
5
+ 現在、画像とJSONのダウンロードボタンが機能していない。また、画像ダウンロード時に表示設定(手・顔の表示チェック)が反映されない。
6
+
7
+ ## 🎯 解決目標
8
+
9
+ 1. **ダウンロード機能の実装**: ボタンクリックでファイルダウンロード
10
+ 2. **表示設定の反映**: 手・顔の表示チェックを画像に反映
11
+ 3. **Gradio File出力**: gr.File コンポーネントでダウンロード実装
12
+ 4. **エラーハンドリング**: ダウンロード失敗時の通知
13
+
14
+ ## 🔧 実装内容
15
+
16
+ ### app.py の修正
17
+ ```python
18
+ # ダウンロード用のgr.File追加
19
+ download_image_file = gr.File(visible=False)
20
+ download_json_file = gr.File(visible=False)
21
+
22
+ # ボタンクリックイベント
23
+ def download_image_handler(pose_data, draw_hand, draw_face):
24
+ # 表示設定を反映して画像生成
25
+ image = export_pose_as_image(pose_data, draw_hand, draw_face)
26
+ # ファイルとして保存
27
+ filename = get_timestamp_filename("dwpose_edit", "png")
28
+ return save_as_file(image, filename)
29
+ ```
30
+
31
+ ### utils/export_utils.py の修正
32
+ - 表示設定パラメータの追加
33
+ - ファイル保存機能の実装
34
+
35
+ ## ✅ 完了条件
36
+
37
+ - [ ] 画像ダウンロードボタンが機能する
38
+ - [ ] JSONダウンロードボタンが機能する
39
+ - [ ] 手の表示チェックが画像に反映される
40
+ - [ ] 顔の表示チェックが画像に反映される
41
+ - [ ] 適切なファイル名でダウンロードされる
42
+
43
+ ## 📝 参考資料
44
+
45
+ - Gradio gr.File コンポーネント
46
+ - 一時ファイル生成とダウンロード
47
+ - refs/dwpose_modifier のエクスポート実装
48
+
49
+ ## 🏷️ タグ
50
+
51
+ `bug` `export` `download` `functionality`