- ImageMagick の Windows binary ファイルダウンロード へ行き、ImageMagick の DLL 版 (ImageMagick-6.8.5-9-Q16-x86-dll.exe) をダウンロードする
- インストール時に PerlMagick for ActiveState Perl を選択する
画像ファイルの長辺・短辺を判断
フォルダ内の全画像ファイルに対して、画像の縦横長を調べる
use Image::Magick; use strict; use utf8; # ディレクトリ内のファイルを探索 my $dir = "."; # カレントディレクトリ my @fileList; my $file; opendir(DH, $dir) or die "$dir:$!"; while ($file = readdir DH) { next if $file =~ /^\.{1,2}$/; # ., .. を除く if ($file =~ /\.jpg$/) { # 末尾が jpg のファイルのみ選択する print "$file\n"; push(@fileList, $file); } } print "\n". "@fileList" . "\n"; my $width, my $height; foreach $file (@fileList) { # インスタンス作成 my $imgMagick = Image::Magick->new; # 画像読み込み $imgMagick->Read($file); # 縦横幅取得 ($width, $height) = $imgMagick->Get("width", "height"); print "$file - Width: $width, Height: $height\n"; }実行結果
> perl image.pl a.jpg b.jpg a.jpg b.jpg a.jpg - Width: 2592, Height: 3872 b.jpg - Width: 3872, Height: 2592画像の長辺を固定幅にそろえる
Perl の Image::Magick モジュールを使ってフォルダ内にある全画像の長辺をすべて 1024 に統一する。
use Image::Magick; use strict; use utf8; # ディレクトリ内のファイルを探索 my $dir = "."; # カレントディレクトリ my @fileList; my $file; opendir(DH, $dir) or die "$dir:$!"; while ($file = readdir DH) { next if $file =~ /^\.{1,2}$/; # ., .. を除く if ($file =~ /\.jpg$/) { # 末尾が jpg のファイルのみ選択する print "$file\n"; push(@fileList, $file); } } print "\n". "@fileList" . "\n"; my $width, my $height; foreach $file (@fileList) { # インスタンス作成 my $imgMagick = Image::Magick->new; # 画像読み込み $imgMagick->Read($file); # 縦横幅取得 ($width, $height) = $imgMagick->Get("width", "height"); print "$file - Width: $width, Height: $height\n"; if ($width > $height) { $imgMagick->Resize(geometry=>"1024x"); } else { $imgMagick->Resize(geometry=>"x1024"); } $imgMagick->Write("f" . $file); }実行結果
> perl image.pl a.jpg b.jpg a.jpg b.jpg a.jpg - Width: 2592, Height: 3872 b.jpg - Width: 3872, Height: 2592実行後、fa.jpg, fb.jpg というファイルが生成され、それぞれ以下のファイルサイズに変換されている
fa.jpg - Width: 685, Height: 1024 fb.jpg - Width: 1024, Height: 685
0 件のコメント:
コメントを投稿