この日記の方針。
- この日記では、超初心者向けの内容は取り扱っておりません。モジュールの利用など、実践的な内容が中心となります。
- ここに貼られるソースは、基本的にそのままでは動かないものばかりです。各自の責任でご利用ください。
- 内容が間違っていることがあります。その際はご指摘いただけるとありがたいです。「検証してみたら違う結果が出た」などの報告も大歓迎です。
- perl -e die
2009-03-24 (Tue)Image::Magick
■ [CGI][Image] Image::Magickで複数のサムネイルを作る

これだけで2時間くらいはまった。かなり特殊なパターン。
$imを外に出してやったほうが効率的だったかも。クラスで包んで内部の値として$imを持たせたりしてみたけど、エラーも出さずに異常終了してしまう始末。どうなってんだか。
動いたからこれでいいや。
# スクリプトの一部。 use CGI; use Image::Magick; my $cgi = CGI->new; my $fin = $cgi->upload('upload'); my $t = time; &thumbnail($fin, $t . '_1.jpg', '640x480'); &thumbnail($fin, $t . '_2.jpg', '128x96'); &thumbnail($fin, $t . '_3.jpg', '160x120'); # # 省略 # sub thumbnail { my($fin, $filename, $geometry) = @_; my $im = Image::Magick->new; # print 'Debug(1): ', tell($fin), "\n"; $im->Read(file => \*$fin); seek($fin, 0, 0); ### <= これがないと二回目以降がうまくいかない # print 'Debug(2): ', tell($fin), "\n"; my $imout = $im->Transform(geometry => $geometry); # # 以下略 # }
ファイルのカーソル位置を戻してやらないとダメだったというオチ。
というか、毎回読むならScale()しても一緒のような気がしてきた。
コメントを書く
トラックバック - http://perl.g.hatena.ne.jp/Cress/20090324
2009-03-19 (Thu)携帯サイト用
■ [CGI][GD] QRコードは簡単に作れる

どのくらい簡単かというと、10分で作れるくらい。
#!/usr/bin/perl use strict; use CGI; use GD::Barcode::QRcode; use Encode; my $cgi = CGI->new; binmode(STDOUT); my $input = decode('utf8', $cgi->param('q')); $input =~ s/[\x0A\x0D]+/ /g; print 'Content-Type: image/png', "\n"; print "\n"; print GD::Barcode::QRcode->new(encode('shiftjis', $input))->plot->png;
GD::Barcode::QRcodeさえインストールしてしまえば、9割作業完了したようなもの。
http://www.example.com/QRcode.cgi?q=http://perl.g.hatena.ne.jp/Cress/ という具合に呼び出す。
Shift_JISにしている理由
携帯電話のバーコードリーダーで読み取ればわかる。
改行が化けるので、こちらも半角スペースに変換。何に変換するのがいいんだろ。タブ文字?
decodeの第一引数のutf8は、設置するWEBページ等の環境に合わせて書き換えること。
どこが便利なのか
「動的にQRcodeを生成できる」のが最大の利点。「ぐるなび」のような店舗検索サイトでは非常に役に立つと思う。URLが長くても、QRcodeを読み取れば一瞬で入力できる。
携帯サイトには、PC用のサイトとは別の良さがある。携帯電話の手軽さを生かすなら、QRcodeの取り扱いは不可欠。
トラックバック - http://perl.g.hatena.ne.jp/Cress/20090319