フォルダ内画像のカラーモードをスクリプト処理でチェックする

　必要に迫られてフォルダ内画像のカラーモードをチェックできるmac用スクリプト書きました。今回は混入したカラーモード違いの画像をハネられればいいのでmacOSに最初から入ってるsipsを使ってます。対応画像形式はjpeg、png、gif、bmp、tif。DTPでまだよく見るEPSはsipsが対応して無いんで対象外です（ImageMagickのidentifyコマンドなら行けるみたい）。

<h4 style="border-bottom:2px solid gray">CMYK/グレースケール画像の混入をチェック</h4>
<pre class="lang:perl decode:true " title="CMYK/グレースケール画像の混入をチェック" >use utf8;
use Encode qw/encode decode/;
use File::Basename qw/basename dirname/;
use File::Find;

#画像フォルダのパスを取得
$imageFolderPath = $ARGV[0];
$imageFolderPath = decode('UTF-8', $imageFolderPath);
#各画像ファイルへの絶対パスを取得
my @imageFilePaths;
find(\&amp;getEachFilePath, $imageFolderPath);

###################チェック処理###################
#ログ出力用変数定義
our $imageColorModeCheckLog = "";
#各imageファイルをチェック
foreach $imageFilePath (@imageFilePaths){
&amp;eachImageFileProceed($imageFilePath);
}

###################ログにタイトル部分を合成###################
if ($imageColorModeCheckLog eq ""){
	$imageColorModeCheckLog = '##ImageFile ColorMode Check Result : ' . "\r\n" . 'OK! All Files No Problem!';
} else {
	$imageColorModeCheckLog = '##ImageFile ColorMode Check Result : ' . "\r\n" . $imageColorModeCheckLog;
}

###################出力###################
#チェック結果を出力
$imageColorModeCheckLog = encode('UTF-8', $imageColorModeCheckLog);
print $imageColorModeCheckLog . "\n";

exit;

###################サブルーチン###################
#各imageファイルのチェック
sub eachImageFileProceed {
	my $imageFilePath = $_[0];
	#各imageファイル名を取得
	my $imageFileName = basename $imageFilePath;
	my $shellCommand = "sips -g space " . $imageFilePath;
	my $imageColorSpaceValue = `$shellCommand`;

	unless ($imageColorSpaceValue =~ /  space: RGB/){
		$imageColorModeCheckLog = ($imageColorModeCheckLog . 'Caution! ImageColorMode Error ' . '   ' . 'FileName:' . $imageFileName . "\n")
	}
}
#各imageファイルへの絶対パスを取得
sub getEachFilePath {
	my $file = $_;
	my $path = $File::Find::name;
	push(@imageFilePaths,$path) if ($path =~ /^(.*?)\.(jpg|jpeg|png|gif|bmp|tif|tiff)$/i);
}</pre> 

<h4 style="border-bottom:2px solid gray">RGB画像の混入をチェック</h4>
<pre class="lang:perl decode:true " title="RGB画像の混入をチェック" >use utf8;
use Encode qw/encode decode/;
use File::Basename qw/basename dirname/;
use File::Find;

#画像フォルダのパスを取得
$imageFolderPath = $ARGV[0];
$imageFolderPath = decode('UTF-8', $imageFolderPath);
#各画像ファイルへの絶対パスを取得
my @imageFilePaths;
find(\&amp;getEachFilePath, $imageFolderPath);

###################チェック処理###################
#ログ出力用変数定義
our $imageColorModeCheckLog = "";
#各imageファイルをチェック
foreach $imageFilePath (@imageFilePaths){
&amp;eachImageFileProceed($imageFilePath);
}

###################ログにタイトル部分を合成###################
if ($imageColorModeCheckLog eq ""){
	$imageColorModeCheckLog = '##ImageFile ColorMode Check Result : ' . "\r\n" . 'OK! All Files No Problem!';
} else {
	$imageColorModeCheckLog = '##ImageFile ColorMode Check Result : ' . "\r\n" . $imageColorModeCheckLog;
}

###################出力###################
#チェック結果を出力
$imageColorModeCheckLog = encode('UTF-8', $imageColorModeCheckLog);
print $imageColorModeCheckLog . "\n";

exit;

###################サブルーチン###################
#各imageファイルのチェック
sub eachImageFileProceed {
	my $imageFilePath = $_[0];
	#各imageファイル名を取得
	my $imageFileName = basename $imageFilePath;
	my $shellCommand = "sips -g space " . $imageFilePath;
	my $imageColorSpaceValue = `$shellCommand`;

	if ($imageColorSpaceValue =~ /  space: RGB/){
		$imageColorModeCheckLog = ($imageColorModeCheckLog . 'Caution! ImageColorMode Error ' . '   ' . 'FileName:' . $imageFileName . "\n")
	}
}
#各imageファイルへの絶対パスを取得
sub getEachFilePath {
	my $file = $_;
	my $path = $File::Find::name;
	push(@imageFilePaths,$path) if ($path =~ /^(.*?)\.(jpg|jpeg|png|gif|bmp|tif|tiff)$/i);
}</pre> 

　なおチェック部分のunlessをifに変えただけです。

　ターミナルで

 
<pre class="theme:tomorrow-night lang:sh decode:true " >perl imgcolormodecheck.pl [画像フォルダのパス] </pre> 

　みたいな感じで使えます。誤ったカラーモードの画像の混入があれば
 
 
<pre class="theme:tomorrow-night lang:sh decode:true " >##ImageFile ColorMode Check Result ： 
Caution! ImageColorMode Error    FileName:001.png
Caution! ImageColorMode Error    FileName:021.png
Caution! ImageColorMode Error    FileName:029.png</pre> 


　のようなアラートが出る感じ。