はじめに
以前、以下の記事にてmdlsやmdfindを使ったファイル検索方法を紹介しました。
今回は、それらを利用して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)にPixelHeightとPixelWidthを与えます。
よって、まzはスクリーンショット画像をmdlsコマンドで確認する必要があります。
Finderを利用し、「画像の情報」を確認しても同様の情報は取得できます。
「大きさ 640x1136 」
といった形式で、単位はピクセルです。
プログラムは、画像ファイルがあるところに配置する例としていますが任意のパスに置く場合はカスタマイズください。
また、いきなりスクリーンショットを全部消すのはリスクが高いので、スクリーンショットと判断した画像は別途ディレクトリに移しています。
実際の出力例
自環境で動作させてみました。
./SS_delete.sh 1136 640 64 pictures moved
実行後、SS_YYYY-MM-DDというディレクトリが作成さて、その中に64枚の画像が移動していました。
結果ですが、移動した画像は全てスクリーンショットでしたが「高さ」と「横」を逆にした
./SS_delete.sh 640 1136
でも同じようにヒットします。
画像が回転しているケースですね。
以上、ご参考になれば幸いです。