Instagram投稿写真のリサイズ

仕分けアプリの続き

前回は写真を仕分けるためのデスクトップアプリを作りました
キーボードのキーを1つ押すだけで写真を指定フォルダへ移動できるやつです。

ついでに機能を色々と付け足していこうと思います

Instagramに投稿用にリサイズしたい。

Instagramのポートレート投稿は縦横比が 4:5(1080×1350px)。
一眼で撮った写真は基本的に 3:2 なので、そのままだとサイドが切れるか、 Instagramのアプリ側で自動トリミングされてしまいます。
せっかくの構図が崩れるのは嫌なので、余白(黒帯)を付けてアスペクト比を合わせたい。

1枚だけなら手作業でも何とかなりますが、投稿したい写真が10〜20枚あると流石に面倒です。
というわけで、アプリにInstagram用の一括リサイズ機能を追加しました。

Instagram用リサイズ機能

ツールバーの「📸 Instagramリサイズ」ボタンを押してフォルダを選ぶと、 そのフォルダ内の写真を全部まとめて変換してくれます。

[f:id:sight_water:xxxxxxxxxx:plain]

処理の内容はこんな感じ:

  • 元の縦横比を保ったままInstagramのポートレートサイズ(1080×1350px)に収まるようリサイズ
  • 余白部分は黒で埋める
  • 変換後のファイルは元フォルダ内の instagram サブフォルダに保存(元ファイルは残る)
  • 処理中はプログレスバーで進捗を確認できる

保存はJPEG quality=95で行っているので、画質の劣化もほぼ気になりません。
変換後はそのままInstagramのアプリにドラッグするだけで投稿できます。

[f:id:sight_water:xxxxxxxxxx:plain]

ちなみにGIFやアニメーション画像は最初のフレームだけ使い、透明チャンネルがある画像は黒背景に合成します。
一眼のRAW現像済みJPEGはもちろん、スマホで撮ったPNGやWebPにも対応しています。

他にも細かく機能を追加した

せっかくなのでついでに欲しいと思っていた機能もまとめて追加しました。 軽く紹介だけしておきます。

  • 🔲 モザイク ― ドラッグで選んだ範囲をピクセル化。粗さは3段階から選択。 写真に映り込んだ個人情報を隠してからSNSに上げたいときに。
  • ✂ トリミング ― 選んだ範囲だけ切り抜いて上書き保存。確認ダイアログあり。
  • ↺↻↔ 回転・反転 ― ツールバーボタンで即時に回転・水平反転。EXIF情報がおかしい写真の向き直しに。
  • ⊞ グリッド表示 ― 写真を一覧で見られるサムネイル表示モード。 クリックするとその写真の1枚表示に切り替わる。
  • ★ 評価・フラグ ― 仕分け中に写真へ1〜5の星評価とフラグをつけられる。 設定ファイルに保存されるので次回起動後も残る。
  • 🗑 削除 ― Delete キーでゴミ箱へ送る。 「明らかにいらない」写真をその場で片付けられる。

インストールと起動

pip install Pillow
python photo_sorter.py

Windows の場合は photo_sorter.vbs をダブルクリックするだけでターミナルなしに起動できます。
ゴミ箱送りを使う場合は追加で以下も。

pip install send2trash

GitHub

https://github.com/sight-water/photo-sorter

思い出の写真を整理するアプリをバイブコーディングで作る

思い出を整理したい

東京の桜を見てカメラで撮りたいと思い、ヨドバシカメラにお世話になってから約4年。

嬉しいことに写真を撮って欲しいという依頼を受けることもあり、サークルのライブやアーティスト写真などを中心に趣味で撮り続けています。

当時勢いで買ってしまったカメラですが、結果として大切な思い出を紡いでくれました。

その枚数、約4万枚。

多すぎる。

あんまり見返す気にはならない。

とりあえずたくさん撮って後から厳選するスタイルなので、使う予定のない写真も相当数混ざっています。
それが積もりに積もって4万枚。

現状特別困っているというわけではありませんが、写真を厳選して共有したり、Instagramに投稿したり、
あるいはいつか友人の結婚式などで写真が必要が必要になった時に、パッと写真を出せるようにしたいなと思っていました。

ないなら自分で作ればいい

写真をうまく整理できる機能を持ったアプリを探していたのですが、あまりしっくりくるものが見つからず。

最近別件でバイブコーディングに触れていて、今なら自分用に写真を整理するデスクトップアプリが作れるのではと思い、今回挑戦してみることにしました。

まずは先日先輩方のライブで2000枚ほど撮ってきたので、これを投稿用や削除用にポチポチ仕分ける作業を効率化するものを作りたいと思います。

※このアプリは Codeを使ったバイブコーディングで作っています※

内容

起動するとフォルダを選んで、仕分けルールを設定する画面が出る。

  • a キー → 「旅行」フォルダへ移動
  • s キー → 「料理」フォルダへ移動
  • d キー → 「猫」フォルダへ移動

あとはキーを押すだけ。写真が即座に移動して、右下にトースト通知が出る。
← → キーで仕分けずに前後を見ることもできる。全部終わると「〇〇枚の仕分けが完了しました」と表示される。

ルールは最大9個まで設定でき、~/.photo_sorter_config.json に自動保存されるので次回起動時も引き継がれる。

技術的なメモ

使用技術

  • Python 3.10+
  • tkinter(GUI。Python標準ライブラリなので追加インストール不要)
  • Pillow(JPEG・WebP の表示に必要。PNG・GIF だけなら tkinter のみで動く)

工夫した点

  • 同名ファイルが移動先に存在する場合は filename_1.jpg のように自動リネームして上書きを防ぐ
  • tkinter はデザインの自由度が低いが、背景色を統一してダークテーマにするだけで見た目が整った
  • Windows でダブルクリック起動できるよう VBS ランチャーを用意した(ターミナルを出さずに起動できる)

インストールと起動

pip install Pillow
python photo_sorter.py

Windows の場合は photo_sorter.vbs をダブルクリックするだけでターミナルなしに起動できる。

GitHub

https://github.com/sight-water/photo-sorter