1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-02-15

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

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(&getEachFilePath, $imageFolderPath);
###################チェック処理###################
#ログ出力用変数定義
our $imageColorModeCheckLog = "";
#各imageファイルをチェック
foreach $imageFilePath (@imageFilePaths){
&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);
}

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(&getEachFilePath, $imageFolderPath);
###################チェック処理###################
#ログ出力用変数定義
our $imageColorModeCheckLog = "";
#各imageファイルをチェック
foreach $imageFilePath (@imageFilePaths){
&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);
}

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

 ターミナルで

perl imgcolormodecheck.pl [画像フォルダのパス] 

 みたいな感じで使えます。誤ったカラーモードの画像の混入があれば

##ImageFile ColorMode Check Result : 
Caution! ImageColorMode Error    FileName:001.png
Caution! ImageColorMode Error    FileName:021.png
Caution! ImageColorMode Error    FileName:029.png

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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?