ローカルで画像(PNG / JPEG)を一括圧縮するシンプルなGUIツールです。Pillow を基本に、pngquant がある環境ではより高率な PNG 圧縮を行います。PyInstaller による onefile Windows ビルドと、GitHub Actions での自動ビルド/Release 作成フローを含みます。
- GUI: ttkbootstrap + Tkinter
- 圧縮エンジン: Pillow(常時); pngquant(tools/pngquant.exe がある場合に使用)
- 配布: onefile Windows EXE を GitHub Releases で配布(CI 自動化済み)
- 再現性: CI は tools/pngquant.exe をリポジトリに置く前提でビルド可能
- Releases ページへアクセス: https://github.com/design-pull/compression-gui/releases
- 配布アセット(例: app-windows-v1.0.0.zip)をダウンロード
- SHA256 を検証(PowerShell):
Get-FileHash .\app-windows-v1.0.0.zip -Algorithm SHA256 | Format-List- ZIP を展開し、dist\app.exe を実行
セキュリティ注意: 署名が付いていないビルドもあります。より強い信頼性が必要なら署名済みリリースを待つか、ソースと CI ログを確認してください。
- Windows 10 / 11(実行確認)
- Python 3.12(開発推奨)
- 仮想環境(.venv)推奨
- 依存は requirements.txt に記載
requirements.txt の例:
Pillow>=10.0.0
ttkbootstrap>=1.6.0
pngquant をローカルで使う場合は tools/pngquant.exe を配置してください(オプション)。
git clone https://github.com/design-pull/compression-gui.git
cd compression-gui
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install --upgrade pip
pip install -r requirements.txt
python app.py# 仮想環境を有効化した状態で
python -m pip install pyinstaller==6.16.0
pyinstaller --onefile --noconsole --icon=img\icon.ico --add-data "img;img" --add-data "tools;tools" app.py
# 出力: dist\app.exeデバッグ用にコンソールを有効にする場合:
pyinstaller --onefile --console --icon=img\icon.ico --add-data "img;img" --add-data "tools;tools" app.py
.\dist\app.exe- .github/workflows/build-release-windows.yml によって、タグ(例 v1.0.0)を push すると Windows ビルドが走り、Release ドラフトに ZIP と SHA256 が添付されます。
- reproducible を重視するなら tools/pngquant.exe をリポジトリにピン留めしておくことを推奨します(ワークフローはその前提で作成済み)。
タグ例:
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0- 出力フォルダは自動作成されます。
- ドライラン機能で想定削減量を確認できます。
- 実行ログや例外はプロジェクトルートの app_run.log に出力されます(UTF‑8)。不具合報告の際は最後の200行を添付してください。
- ModuleNotFoundError(例: ttkbootstrap): ビルドに使う Python 環境で
pip install -r requirements.txtを実行し、同じ環境でpython -m PyInstaller ...を使って再ビルドしてください。 - PermissionError(dist\app.exe の削除失敗): 実行中の app プロセスを停止(Get-Process -Name app | Stop-Process -Force)するか PC を再起動してから再ビルドしてください。
- pngquant が使われない: tools/pngquant.exe が同梱されているか確認。CI で同梱する場合は workflow が該当ファイルを検出できるようにしてください。
- ログが文字化けする場合: PowerShell で UTF‑8 指定して表示(Get-Content .\app_run.log -Encoding UTF8 -Tail 200)。
- app-windows-.zip (dist\app.exe を含む)
- SHA256SUM-.txt
- README.md(このファイル)
- CHANGELOG.md(リリース情報)
- LICENSE.txt
- Fork → ブランチ → Pull Request のフローでお願いします。
- 新しい依存を追加する場合は requirements.txt を更新してください。
- 大きなバイナリは Git LFS を検討してください。
LICENSE ファイルをプロジェクトルートに置いてください(未指定の場合はまずライセンスを決めてください)。
不具合報告は GitHub Issues にて。報告時は次を添えてください:
- 使用 OS と Python バージョン
- 該当リリースタグ
- app_run.log の最後 200 行(UTF‑8)
- 再現手順