未分類

one_resize 仕様

プロジェクト名: one_resize
目的:
Windows Explorer から画像を右クリックして、FFmpeg で
1. 幅固定リサイズ
2. 画質変更
3. 単体画像ビューア
を行えるツールを作る。
前提:
- 既存実装は信用しない
- 既存コードを流用して同じバグを持ち込まない
- 完全な作り直し前提
- コマンドプロンプトは表示しない
- 勝手な補助メニュー名を増やさない
- 正式メニュー名は one_resize のみ
対象OS:
- Windows
対応入力形式:
- PNG
- JPG
- JPEG
- GIF
基本動作:
- 1枚選択時:
- リサイズ可
- 画質変更可
- 表示可
- 複数選択時:
- リサイズ可
- 画質変更可
- 表示不可
- 複数選択時は選択された対応画像を全部処理する
- 一部失敗しても他のファイル処理は継続する
右クリックメニュー仕様:
画像ファイル右クリック時に `one_resize` というサブメニューを1つだけ出す。
`one_resize` 配下の項目は以下で固定。
- 幅1080
- 幅540
- 幅330
- 幅270
- 幅1080 _resize
- 幅540 _resize
- 幅330 _resize
- 幅270 _resize
- png png8
- png png24
- png png32
- jpg 低
- jpg 中
- jpg 高
- 表示
禁止:
- one_accuracy を作らない
- accuracy_change を作らない
- one_tools を作らない
- one_resize 以外の派生右クリックメニューを勝手に増やさない
SendTo仕様:
- SendTo にも one_resize を登録する
- ただし SendTo 側にゴミや派生フォルダや複数名称を散乱させない
- ユーザーが見て「どれを送ればいいか分からない」状態を作らない
- SendTo は右クリック本体の補助導線
- SendTo 側の機能が右クリック本体より複雑になってはいけない
リサイズ仕様:
- 幅指定のみ
- 高さは元画像の縦横比を維持して自動計算
- 指定幅:
- 1080
- 540
- 330
- 270
- 縦長画像でも横長画像でも勝手に回転しない
- 出力方式は2種類:
- 上書き
- 別名保存
- `_resize` が付かない項目は上書き
- `_resize` が付く項目は別名保存
- 別名保存時の名前:
- sample.png -> sample_resize.png
- 同名が存在する場合:
- sample_resize.png
- sample_resize_2.png
- sample_resize_3.png

Accuracy仕様:
Accuracy は画質変更選択画面を開く機能。

PNGの選択肢は3種類:
- PNG32
- PNG24
- PNG8

JPG/JPEGの選択肢は3種類:
- JPG 高
- JPG 中
- JPG 低

保存方式は2種類:
- 上書き
- `_accuracy` 付き別名保存

デフォルトは上書き。

`_accuracy` 別名保存時の名前:
- sample.png -> sample_accuracy.png

同名が存在する場合:
- sample_accuracy.png
- sample_accuracy_2.png
- sample_accuracy_3.png

形式ごとの適用ルール:
- PNG32 / PNG24 / PNG8 は PNG のみ処理
- JPG 高 / 中 / 低 は JPG / JPEG のみ処理
- 混在選択時は、選んだ項目に対応する形式だけ処理
- 対応外形式はスキップし、結果で分かるようにする

表示機能仕様:
- 表示は変換を伴わない単なる表示
- 1ファイル選択時のみ起動可能
- 複数選択時は起動しない
- 初期ウィンドウは小さすぎないこと
- 初期幅は約420px以上を目安
- 見た目はおおむね16:9程度
- 表示項目:
- ファイルサイズ
- 画像サイズ
- 精度情報
- ビューア内機能:
- 左90度回転
- 180度回転
- 右90度回転
- Save
- Save As
- 回転しただけでは元ファイルを変更しない
- Save 実行時のみ反映
- Save As は別名保存
- Save As の名前:
- sample.png -> sample_rotate.png
- 同名が存在する場合は連番付与
- 縦長画像を勝手に横向き表示しない
- 自動回転禁止
- ユーザーが押した回転操作だけ反映してよい

UI要件:
- コマンドプロンプトを表示しない
- ユーザーは Explorer 上だけで操作できること
- 選択肢の意味が直感的に分かること
- 上書きか別名保存かが明確であること
- PNG向け選択肢と JPG向け選択肢が分かりやすいこと

依存要件:
- FFmpeg を使う
- ffmpeg.exe が見つからない場合は分かる形でエラー表示
- PATH 上、または指定済み固定パスのどちらでもよいが、実装側で明確に扱うこと

安全性要件:
- 上書き時でも直接元ファイルに書き込まず、一時ファイル経由で置換すること
- 失敗時に壊れた中間ファイルをできるだけ残さないこと
- 複数ファイル処理中、一部失敗しても全体停止しないこと

インストール要件:
- 右クリックメニュー登録手段を用意
- SendTo 登録手段を用意
- アンインストール手段を用意
- アンインストール時は自分が作った項目だけを消す
- 標準の SendTo 項目や無関係な右クリック項目を壊さない

絶対禁止事項:
- one_resize 以外の正式メニューを勝手に増やすこと
- デバッグ中のゴミ項目を残すこと
- 縦長画像の自動回転表示
- 可視の cmd / PowerShell コンソール起動
- SendTo や右クリックに複数の試作導線を散乱させること
- 既存実装を継ぎ足して同じ不具合を持ち込むこと

受け入れ条件:
1. 右クリックで one_resize だけが見える
2. one_resize 配下に指定の項目が出る
3. 幅1080/540/330/270 が縦横比維持で動く
4. `_resize` 付き項目が別名保存で動く
5. PNG選択時は PNG のみ処理する
6. JPG選択時は JPG/JPEG のみ処理する
7. 表示は1ファイル時のみ動く
8. 表示でファイルサイズ・画像サイズ・精度が見える
9. 表示で左90/180/右90が使える
10. 縦長画像が勝手に回転されない
11. SendTo にゴミが散乱しない
12. コマンドプロンプトが見えない
13. FFmpeg 未導入時に分かる形で失敗する
14. 複数ファイル処理で一部失敗しても残りを続行する

実装方針:
- 今あるコードは参考にせず、仕様を満たす最小構成で新規設計すること
- まず要求仕様を満たすことを優先し、回避策の継ぎ足しで複雑化しないこと

関連記事一覧