(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Mac】mdfindコマンドで特定サイズの画像群を判別する

スポンサーリンク

はじめに

以前、以下の記事にてmdlsmdfindを使ったファイル検索方法を紹介しました。

今回は、それらを利用してiPhoneのスクリーンショット画像を自動的に判別するプログラムを用意しました。

スクショの自動判別

iPhoneで撮った写真をPCに保存等を行うと、画像をファイルとして扱うことが可能です。

今回、ファイルがスクリーンショットか否かを判断するのに

kMDItemPixelHeight

kMDItemPixelWidth

を利用しました。

要は、スクリーンショットはこちらの値が全て固定である点を利用します。

作ったプログラムの全文は以下です.

#!/bin/sh
ARRAY=(`mdfind -onlyin ./ "kMDItemPixelHeight = '$1' && kMDItemPixelWidth = '$2$"`)
mkdir SS_`date +%Y-%m-%d`
i=0
for var in ${ARRAY[@]}
do
fext="${var##*/}"
mv $var ./SS_`date +%Y-%m-%d`/$fext
i=$((i+1))
done
echo $i pictures moved

スクリプトの説明

引数($1,$2)にPixelHeightPixelWidthを与えます。
よって、まzはスクリーンショット画像をmdlsコマンドで確認する必要があります。

Finderを利用し、「画像の情報」を確認しても同様の情報は取得できます。

「大きさ 640x1136 」

といった形式で、単位はピクセルです。

プログラムは、画像ファイルがあるところに配置する例としていますが任意のパスに置く場合はカスタマイズください。

また、いきなりスクリーンショットを全部消すのはリスクが高いので、スクリーンショットと判断した画像は別途ディレクトリに移しています。

実際の出力例

自環境で動作させてみました。

./SS_delete.sh 1136 640
64 pictures moved

実行後、SS_YYYY-MM-DDというディレクトリが作成さて、その中に64枚の画像が移動していました。

結果ですが、移動した画像は全てスクリーンショットでしたが「高さ」と「横」を逆にした

./SS_delete.sh 640 1136

でも同じようにヒットします。

画像が回転しているケースですね。

以上、ご参考になれば幸いです。