時々帖

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

画像ファイルのトリムをいっぺんにやりたい!

画像ファイルをちまちまトリムしてくのがいやだったので,ImagerってCPANモジュールを使ってスクリプトを書いた.
Imagerのおかげで超簡単.

cpanでImagerを入れる(in Cygwin)

$ install Imager


とするとtestで怒られるので

force install Imager


ってやっちゃった.

スクリプトはこんな感じ

#!/usr/bin/perl

use strict;
use warnings;
use Imager;
use Getopt::Long;

die "Usage: crop-img.pl fromfile tofile\n"
if (!$ARGV[0]|| !$ARGV[1]);

die "no such file $ARGV[0]\n" if !-f $ARGV[0];

my $file = shift;
my $tofile = shift;

my %option = (
left => 0,
right => 0,
top => 0,
bottom=> 0,
);

GetOptions(\%option,
'left=i' ,
'right=i' ,
'top=i' ,
'bottom=i',
'verbose' ,
) or die "unknown option\n";

my $img = Imager->new();
$img->read(file=>$file) or die $img->errstr();

my ($name) = $file =~ /([^.]*)\.[^.]*$/;
my ($format) = $tofile =~ /[^.]*\.([^.]*)$/;

my $newimg = $img->crop(left=>$option{left},
right=>$img->getwidth-$option{right},
top=>$option{top},
bottom=>$img->getheight-$option{bottom});

if ($option{verbose}) { print "made $name\n"; }
$newimg->write(file=>$tofile) or die $newimg->errstr;

でこのスクリプトをパスの通ったディレクトリにcrop-imgとリネームして置いて

$ crop-img.pl torsokojiro100.jpg test.jpg -l 50 -r 200 -t 50 -b 200


で左から50,右から200,上から50,下から200画像をトリムしてtest.jpgって名前で保存する.

$ for file in $(ls -p *.bmp)
do
crop-img ${file} crop-${file} -v -l 280 -r 270 -t 40 -b 20
done


ってするとカレントディレクトリのbmpファイルをトリムして先頭にcrop-って文字列を付けて保存する.

ls -p ってしてるのはファイル名の末尾に*(アスタリスク)が付かないようにするため
http://support.media-enterprise.co.jp/linuxcmd/cmd/ls/ls.html
スポンサーサイト
  1. 2008/01/21(月) 19:35:08|
  2. Perl
  3. | トラックバック:0
  4. | コメント:1
<<センゴク外伝桶狭間戦記 | ホーム | 360°全周を見られるビデオ>>

コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
  1. 2012/03/22(木) 21:53:36 |
  2. |
  3. #
  4. [ 編集]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://namikister.blog101.fc2.com/tb.php/15-a80e6f20
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。