Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Batch Crop Tool

複数の画像・動画を一括で切り抜きできるPySide6製のGUIツール。一度設定した切り抜き範囲を同じサイズのメディアファイルすべてに同時適用できます。

🎯 主な機能

  • 一括切り抜き処理 - 一つのメディアファイルで設定した切り抜き範囲を、同じサイズのすべてのファイルに適用
  • 画像・動画両方に対応 - 画像ファイルだけでなく、動画ファイルも同じUIで切り抜き可能(ffmpeg使用)
  • 直感的なマウス操作 - ドラッグで範囲選択、ハンドルで微調整、ズーム・パン操作
  • アスペクト比固定 - 16:9、4:3、1:1など、特定の縦横比で切り抜き可能
  • リアルタイム座標表示 - 切り抜き範囲の座標をリアルタイムで確認
  • スマートな範囲制限 - メディアサイズを超える不正な座標を自動的に制限
  • 柔軟なファイル管理
    • ドラッグ&ドロップ対応
    • 複数選択・個別削除
    • 右クリックメニュー
    • 異なるサイズのファイルを視覚的に区別
    • ファイルタイプ(🎬動画/🖼️画像)を一目で識別

📋 必要要件

🚀 インストール

  1. リポジトリをクローン
git clone https://github.com/kuronekorou39/batch-crop-tool.git
cd batch-crop-tool
  1. 仮想環境を作成
python -m venv venv
  1. 仮想環境を有効化

Windows:

venv\Scripts\activate

Linux/Mac:

source venv/bin/activate
  1. 依存パッケージをインストール
pip install -r requirements.txt

💻 使い方

  1. 仮想環境を有効化(まだの場合)
# Windows
venv\Scripts\activate

# Linux/Mac
source venv/bin/activate
  1. ツールを起動
python image_batch_cropper.py
  1. メディアファイルを追加

    • 「ファイルを追加」ボタンから選択(画像または動画)
    • またはファイルをドラッグ&ドロップ
    • 異なるサイズのファイルを追加した場合、選択中のファイルと異なるサイズのものは灰色で表示され、処理時にスキップされます
    • ファイルリストでは🎬(動画)と🖼️(画像)のアイコンでタイプを識別できます
  2. 切り抜き範囲を設定

    • マウスドラッグで範囲を選択(メディアは自動的に中央に表示されます)
    • 動画の場合、最初のフレームがプレビューとして表示されます
    • 赤いハンドルをドラッグして微調整
    • 座標入力で数値を直接入力(メディアサイズを超える値は自動制限)
    • マウスホイールでズームイン/アウト
    • 右クリック + ドラッグでメディアを移動(パン)
  3. アスペクト比を固定(オプション)

    • 「アスペクト比固定」をチェック
    • プリセット(1:1、4:3、16:9など)またはカスタム比率を選択
    • 矩形が選択した比率で固定されます
  4. 切り抜いて保存

    • 「切り抜いて保存...」ボタンをクリック
    • 保存先フォルダを選択
    • 選択中のファイルと同じサイズのファイルすべてが自動的に切り抜かれ、保存されます
    • 画像はQImageで、動画はffmpegで処理されます

🎮 操作方法

メディアビューアでの操作

  • 左クリック + ドラッグ: 新規範囲選択
  • 範囲内をドラッグ: 範囲を移動
  • 角のハンドルをドラッグ: 対角方向にリサイズ(アスペクト比固定時は比率を維持)
  • 辺のハンドルをドラッグ: 水平/垂直方向にリサイズ(アスペクト比固定時は無効)
  • マウスホイール: ズームイン/アウト(マウス位置を中心に拡大縮小)
  • 右クリック + ドラッグ: メディアをパン(スクロール)

ファイルリストでの操作

  • クリック: ファイルを選択して表示
  • Ctrl/Shift + クリック: 複数ファイル選択
  • 右クリック: コンテキストメニュー表示(削除など)
  • アイコンによる識別:
    • 🎬: 動画ファイル
    • 🖼️: 画像ファイル
  • 色による区別:
    • 黒色: 選択中のファイルと同じサイズ(処理対象)
    • 灰色: 異なるサイズ(処理時にスキップ)

座標入力

  • X, Y: 切り抜き範囲の左上座標
  • 幅, 高さ: 切り抜き範囲のサイズ
  • メディアサイズを超える値は自動的に制限されます
  • 例:X=1000、幅=920の場合、1920x1080メディアでは合計1920となり、これ以上増やせません

🔧 アスペクト比固定

特定の縦横比で切り抜きたい場合に便利な機能です。

プリセット比率

  • 1:1 (正方形): Instagram投稿、プロフィール画像
  • 4:3: デジタルカメラ、旧型テレビ
  • 3:2: 一眼レフカメラ
  • 16:9: フルHD、YouTube動画
  • 16:10: ワイドモニター
  • 21:9: ウルトラワイドモニター

カスタム比率

任意の比率を設定できます(例:5:4、2:1など)

使用方法

  1. 「アスペクト比固定」をチェック
  2. プリセットまたはカスタムを選択
  3. 矩形の選択・リサイズ時に自動的に比率が維持されます

📝 対応ファイル形式

画像形式

  • PNG (.png)
  • JPEG (.jpg, .jpeg)
  • BMP (.bmp)
  • GIF (.gif)

動画形式

  • MP4 (.mp4)
  • AVI (.avi)
  • MOV (.mov)
  • MKV (.mkv)
  • WMV (.wmv)
  • FLV (.flv)
  • WebM (.webm)
  • M4V (.m4v)

💡 使用例

同じサイズのスクリーンショットを一括切り抜き

  1. 複数のブラウザスクリーンショット(すべて1920x1080)を追加
  2. 一枚目でコンテンツ部分を選択
  3. 「切り抜いて保存」で全画像の同じ位置を切り抜き

YouTubeサムネイル用に16:9で切り抜き

  1. 画像を追加
  2. 「アスペクト比固定」をチェックし、「16:9」を選択
  3. 範囲を選択(自動的に16:9の比率で固定されます)
  4. 切り抜いて保存

ゲーム実況動画から同じ部分を一括トリミング

  1. 複数のゲーム実況動画(すべて同じ解像度)を追加
  2. 一つ目の動画(最初のフレームが表示される)でゲーム画面部分を選択
  3. 「切り抜いて保存」で全動画の同じ領域をトリミング
  4. 動画はffmpegで処理され、音声もそのまま保持されます

異なるサイズのファイルを含む場合

  1. 1920x1080の動画3本と1280x720の動画2本を追加
  2. 1920x1080の動画を選択して範囲設定
  3. 切り抜き実行時、同じ1920x1080の3本のみ処理(1280x720はスキップ)

画像と動画を混在させる

  1. 1920x1080の画像2枚と同じサイズの動画3本を追加
  2. どれかを選択して範囲設定
  3. 「切り抜いて保存」で全5ファイルが自動的に処理されます
    • 画像(🖼️)はQImageで切り抜き
    • 動画(🎬)はffmpegでトリミング

⚠️ 注意事項

  • メディアサイズの違い: 選択中のファイルと異なるサイズのファイルは自動的にスキップされます
  • 非破壊処理: 元のファイルは変更されず、新しいファイルとして保存されます
  • ファイル名: 切り抜いたファイルは 元のファイル名_cropped.拡張子 として保存されます
  • 上書き防止: 同名ファイルが存在する場合、_cropped_1_cropped_2... と連番が付きます
  • 動画処理について:
    • 動画のトリミングにはffmpegが必要です(インストール手順
    • ffmpegが見つからない場合、起動時に警告が表示されます
    • 音声はそのまま保持されます(-c:a copyオプション使用)
    • 動画処理は画像より時間がかかる場合があります
    • 動画の最初のフレームのみプレビュー表示され、トリミング範囲の設定に使用されます
    • ffmpegが見つからない場合、動画ファイルの処理はスキップされますが、画像は問題なく処理できます

🤝 貢献

プルリクエストを歓迎します。大きな変更の場合は、まずissueを開いて変更内容について議論してください。

📄 ライセンス

MIT License

🙏 謝辞

このツールは以下のライブラリ・ツールを使用して開発されています:

  • PySide6 - GUIフレームワーク
  • OpenCV - 動画のフレーム抽出
  • ffmpeg - 動画のトリミング処理

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages