時々帖

スポンサーサイト

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

写真の日付をフォルダ名に付ける

いままで写真をイベントごとにフォルダ分けして管理してきたけど、PMBから写真を見るときにはフォルダが名前順で並べられられ日付順に並べられないのでちょっと不便だった。
そこで、フォルダの先頭にそのフォルダが保持する写真の日付を付けて回る使い捨てスクリプトを書いた。

スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2011/05/01(日) 02:14:54|
  2. Perl
  3. | トラックバック:0
  4. | コメント:1

Net::Amazonにパッチを当てておいた

Net::Amazonのバグ?があったので,メモしとく.
#!/usr/bin/perl
use strict;
use warnings;
use Net::Amazon;
use Net::Amazon::Request::Wishlist;
use constant DEV_TOKEN => 'HOGEHOGE';
use constant WISHLIST_ID => 'HOGE';
use constant MAX_PAGE => 30;

my $amazon =Net::Amazon->new(token => DEV_TOKEN,
max_pages => MAX_PAGE,
locale => 'jp',
);
my $req = Net::Amazon::Request::Wishlist->new(id => WISHLIST_ID);
my $resp = $amazon->request($req);

のようなプログラムを実行するときにMAX_PAGEが登録されてるウィっシュリストのページ数より大きいと次のようなエラーが出てとまってしまう.
$ ./hoge.pl
Can't get wishlist: Net::Amazon::Response::Wishlist=HASH(0x9021dfc)->message() at ./hoge.pl line 57

とりあえず,以下のようなパッチを当てておいた.
*** Amazon_old.pm       Wed Jun 20 23:56:30 2007
--- Amazon.pm Mon Oct 15 18:28:43 2007
***************
*** 185,192 ****
$res->current_page($ref, $page);
$res->set_total_results($ref);

! my $rc = $res->is_page_error($ref);
if ($rc == 0) {
return $res;
} elsif ($rc == -1) {
last;
--- 185,193 ----
$res->current_page($ref, $page);
$res->set_total_results($ref);

! my $rc = $res->is_page_error($ref, $res);
if ($rc == 0) {
+ last if(defined $page && $page > 0);
return $res;
} elsif ($rc == -1) {
last;

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2008/03/03(月) 22:23:20|
  2. Perl
  3. | トラックバック:0
  4. | コメント:0

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

画像ファイルをちまちまトリムしてくのがいやだったので,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
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。