おはようございます。
今は朝の1106。
おなか痛いインタラプトにより起床。寝る前にカジリッチョ4本食ったのがアカンかったんか?
はてなブログには月間ディスク使用量制限があり300MBとなってます。写真をどんどこアップロードするとてっぺん越えしそうだなということで、今月からGIMPでしこしこリサイズしてからアップロードするようにしておりました。
写真の長い方の辺が2048pxを超えないように、そして正方形の方がいい写真は上下左右をカットしてからリサイズしてます。
しかし、旅日記は写真が多すぎてダルすぎたのでフェリー内でスクリプト書きました。
旅行にはMBAを持っていき、家ではWindowsなのでどちらでも動くようにしたい。そしてデスクトップにあるアイコンに写真をドラッグアンドドロップしたら変換して、元ファイルと同じフォルダーに出力するようにします。
画像変換はimagemagickに任せたいので、Macはbrewで、WindowsはWSL2にaptでインストールしました。
スクリプトは以下、im_max2048.shが最長辺を2048pxに縮小、im_square.shは正方形にしてから縮小するスクリプトです。とりまMacとWSL2で動けばいいのでそれだけ対応。変換処理の最後の行しか違わんけどまぁええやろ。
~/scripts/im_max2048.sh
os=$(uname -s)
if [[ "$os" == "Linux" ]]; then
if grep -q microsoft /proc/version 2>/dev/null; then
windows_path=$(echo "$1" | sed 's#\\#/#g')
input_file=$(wslpath "$windows_path")
else
input_file="$1"
fi
elif [[ "$os" == "Darwin" ]]; then
export PATH="/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin"
input_file="$1"
fi
dir_name=$(dirname "$input_file")
base_name=$(basename "$input_file" | sed 's/\.[^.]*$//')
output_file="${dir_name}/${base_name}.jpeg"
convert $input_file -resize 2048x2048\> $output_file
~/scripts/im_square.sh
os=$(uname -s)
if [[ "$os" == "Linux" ]]; then
if grep -q microsoft /proc/version 2>/dev/null; then
windows_path=$(echo "$1" | sed 's#\\#/#g')
input_file=$(wslpath "$windows_path")
else
input_file="$1"
fi
elif [[ "$os" == "Darwin" ]]; then
export PATH="/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin"
input_file="$1"
fi
dir_name=$(dirname "$input_file")
base_name=$(basename "$input_file" | sed 's/\.[^.]*$//')
output_file="${dir_name}/${base_name}.jpeg"
convert $input_file -gravity center -crop 1:1 -resize 2048x2048 $output_file
これらのスクリプトをどうやってデスクトップにアイコン化するかですが、MacはスクリプトエディタでAppleScriptを書いてアプリケーションとして書き出します。ソースコードは以下。im_max2048とim_squareをそれぞれ作りました。
on open droppedFiles
repeat with aFile in droppedFiles
set filePath to POSIX path of aFile
do shell script "/Users/chan/scripts/im_max2048.sh " & quoted form of filePath
end repeat
end open
Windowsはデスクトップにバッチファイルを作りました。ソースコードは以下。im_max2048.batとim_square.batをそれぞれ作りました。
@echo off
setlocal
for %%i in (%*) do (
wsl /home/chan/scripts/im_max2048.sh "%%~fi"
)
かくして、写真のリサイズ作業はめちゃんこ楽ちんになりましたとさ。めでたしめでたし。
おうちごはん。これは九州土産で買ってきたヤツで炊いた後に混ぜるヤツ。米は少し硬めに炊いた方がいいかも。