Webの素材を再利用して・・・などの場合、Facebookだとそのまま利用できなかったりすることもある。この辺りで時間をかけたくないので、特定のフォルダにドロップしたら、PNGとJPGに変換(元のファイルもそのまま)するようにしたいと考えた。
Mac の Automator で設定すればシームレスに行きそうなので、設定を行ったのでその記録。
Automatorを開く
- Launchpadから「Automator」を開く。
- 「新規書類」を選択し、「フォルダアクション」を選択。
フォルダを選択する
画面上部にある「フォルダアクションは、次の場所に追加されたファイルやフォルダを受け取る」の項目で、WebPファイルをドロップしたいフォルダを選択。
スクリプトを追加する
- 左側の「アクションライブラリ」から「シェルスクリプトを実行」を右側にドラッグ。
- 右側の「シェルスクリプトを実行」の右側、入力の引き渡し方法を「引数として」を選択。
- 「シェルスクリプトを実行」アクションに、以下のスクリプトを入力。
#!/bin/zsh
# シェルは、必要に応じて /bin/bash に変更
# ログファイルのパスを設定
log_file=~/Desktop/automator_log.txt
# スクリプト開始のログ出力
echo "Script started at $(date)" >> "$log_file"
echo "Number of files: $#" >> "$log_file"
# 渡されたすべてのファイルに対して処理を実行
for f in "$@"
do
# ファイルパスのログ出力
echo "Processing file: $f" >> "$log_file"
# ファイル名と拡張子の分離
filename="${f%.*}"
extension="${f##*.}"
# ファイル情報のログ出力
echo "Filename: $filename, Extension: $extension" >> "$log_file"
# 拡張子を小文字に変換して比較
if [[ "${extension,,}" == "webp" ]]; then
# PNGに変換
sips -s format png "$f" --out "${filename}.png" >> "$log_file" 2>&1
if [ $? -eq 0 ]; then
echo "Converted to PNG: ${filename}.png" >> "$log_file"
else
echo "Failed to convert to PNG: $f" >> "$log_file"
fi
# JPEGに変換
sips -s format jpeg "$f" --out "${filename}.jpg" >> "$log_file" 2>&1
if [ $? -eq 0 ]; then
echo "Converted to JPEG: ${filename}.jpg" >> "$log_file"
else
echo "Failed to convert to JPEG: $f" >> "$log_file"
fi
else
echo "Skipped (not a webp file): $f" >> "$log_file"
fi
done
# スクリプト終了のログ出力
echo "Script ended at $(date)" >> "$log_file"
ワークフローを保存する
作成したワークフローに適当な名前を付けて保存。
「WebPへ変換」など自分で理解しやすい名前がいいかな。
テストする
指定したフォルダにWebPファイルをドラッグ&ドロップして、PNGとJPEGファイルが自動的に生成されることを確認。
デスクトップにもログが残るはずだから、それも併せて確認。
おそらくこれで問題なく変換が可能なので終了。
追加情報
もしsipsで品質や設定が足りない場合、imagemagick などをインストールして同様のスクリプトで利用することができる。