[TIPS]インスタ投稿用の画像加工をImageMagickで一発処理するBAT
インスタ投稿時にちょっとしたサイズ加工が必要になることがある。Windows上で一発操作できる変換BATを開発したので、備忘録として書き残す。noteの記述力を試したい狙いで書いてみたけど、おそらくコード書くならQiitaの方が向いている。
ImageMagickの環境構築
前提としてWindows10でImageMagickがインストールされていて、パスが通っている状態を前提とする。既に整っている人はこの節は読み飛ばしてね。
ImageMagickは画像処理ライブラリーなるもので、Photoshopのようなマウス操作するペイントソフトとは違って、キーボードから命令を入力しなければならない。でも、一度命令をつくると次からは省力化できるので、何回も単調作業を繰り返す場合は一発で済んでラクチン。
インストールは、以下のサイトからWindows用のexe形式をダウンロードできそう。
以下のサイトによると、portable版を入手して、自力でパスを通すのが環境汚さなくてよいのだとか。
コマンドプロンプト開いて「magick -version」を唱えて、何かしら数字が確認できれば準備OK。
縦長の写真に余白を付けてインスタに投稿する
デジカメで縦長の写真を撮ると2:3となるけれど、instagramの縦長写真は4:5までしかサポートしていないため、投稿時に上下が切れてしまう。縦長写真をそのままのアスペクト比で投稿するために、左右に余白を入れることで正方形に加工するBATを開発した。
1.以下をメモ帳に張り付けて「縦長加工.bat」とか適当にリネームして保存する。
2.適当なフォルダーの直下に上記BATファイルと加工したいJPG画像だけを置く。
3.BATファイルを実行して待つと、サブフォルダー内に正方形になるように余白を入れて加工したJPG画像が生成される。
@echo off
setlocal enabledelayedexpansion
cd %~dp0
set EXP=jpg
set SIZE=1080
for %%f in (*.%EXP%) do (
mkdir %%~nf
magick convert -resize %SIZE%x%SIZE% %%f -gravity center -extent %SIZE%x%SIZE% %%~nf\%%~nf.%EXP%
)
パノラマ写真をカルーセル投稿用に切り出す
一眼で写真を撮ってLightroomで現像していれば、パノラマ写真は簡単に現像できて意外性あるのでオススメ。
ただ、パノラマ写真を撮ったところで、インスタの横長は1080x566までしか投稿できず、解像度も落ちるので勿体ない。ちょっと意外な投稿として、パノラマ写真から1080x1080を切り出した画像を複数用意し、カルーセル投稿する方法がある。スマホで横にくると繋がっているように見える。
1.以下をメモ帳に張り付けて「パノラマ.bat」とか適当にリネームして保存する。
2.適当なフォルダーの直下に上記BATファイルと加工したいパノラマJPG画像だけを置く。
3.BATファイルを実行して待つと、サブフォルダー内に正方形に切り出し加工した複数のJPG画像が生成される。
@echo off
setlocal enabledelayedexpansion
cd %~dp0
set EXP=jpg
set SIZE=1080
for %%f in (*.%EXP%) do (
mkdir %%~nf
for /f "usebackq tokens=*" %%i in (`magick identify -format %%h %%f`) do @set H=%%i
for /f "usebackq tokens=*" %%i in (`magick identify -format %%w %%f`) do @set W=%%i
set /a R=!W!/!H!
for /L %%i in (0,1,!R!) do (
set /a OFFSET=%%i*%SIZE%
magick convert -resize x%SIZE% %%f -gravity west -crop %SIZE%x%SIZE%+!OFFSET!+0 %%~nf\%%~nf_%%i.%EXP%
)
)
横長のパノラマ画像を入力すると、縦幅のサイズを求めて、左から順に正方形で切り出すという処理になっている。1枚目がインスタのタイムラインに並ぶことを考えると、いちばん左だけで成立するように撮るのがよさそう。
グリッド投稿用に画像を3枚ずつおろす
(2023/2/16)需要があったので追記する。インスタのアカウント開設直後に、とりあえず画像を投稿して見栄え良くしたい時なんかに、グリッド投稿をする。要するにこういうやつだ。
これを実現するためのbatを紹介する。使い方は上と同じ。
@echo off
setlocal enabledelayedexpansion
cd %~dp0
set EXP=jpg
set SIZE=1080
for %%f in (*.%EXP%) do (
mkdir %%~nf
for /f "usebackq tokens=*" %%i in (`magick identify -format %%h %%f`) do @set H=%%i
for /f "usebackq tokens=*" %%i in (`magick identify -format %%w %%f`) do @set W=%%i
set /a R=-1+3*!H!/!W!
for /L %%i in (0,1,!R!) do (
for /L %%j in (0,1,2) do (
set /a OFFSETX=%%j*%SIZE%
set /a OFFSETY=%%i*%SIZE%
set /a W=%SIZE%*3
magick convert -resize !W!x %%f -gravity NorthWest -crop %SIZE%x%SIZE%+!OFFSETX!+!OFFSETY! %%~nf\%%~nf_%%i_%%j.%EXP%
)
)
)
※不具合があった場合、気が向いたら修正するけれど、使用は自己責任でお願いしたい。Mac対応が必要という場合、Macbookくれたらやるわ。
他にも、画像に自分の名前を埋め込むとか、添付しやすいように圧縮やリサイズなど、お決まりの処理があれば自動化してみるのもよいだろう。需要があれば書き足すかも。