このブログを検索

2011/10/28

画像アップローダの作成

画像アップローダーを作ろう。 そういうサイトはたくさんあるけど、なかなか私の使いたいものがない。 以前使っていたサイトがあって、それがとてもよかった。 まず、画像はすべてサムネイルが表示される。 サムネイルといっても、結構大きめで、それで十分楽しめるくらいの大きさである。 PCの1画面で、3、4列くらいかな。 背景は黒。各画像の下には短いコメントが表示される。 多くの場合は何もないか、ごく短い。 投稿者だけでなく閲覧者もコメントをつけられるが、そのコメントはサムネイル表示時には表示されない。

画像の表示はglobでいいかな。 まずglobで画像を表示させてみると、大きさがまちまちになる。

これをプレビュー画面では同じ大きさに統一したい。 Windowsのexplorerとかpicasaとかのように。 さて、どうやるか。 ちょっと調べるといろいろ出てくる。 いつもはとりあえずなんでもいいから動くものに食いついてきたけど、 今回はどんな方法があるのかを調べて吟味してから使おう。

Image::Magick

GD

ImgResize

画像のサムネイルを作成する。

#!/usr/bin/perl
use strict;
use Image::Magick;

print "Content-type: text/html\n";
print "\n";
my @files = glob "./images/*.png ./images/*.jpg";
foreach (@files){
&MakeThumbnails($_);
}

print '<table border="0" cellspacing="3" cellpadding="3" width=80%><tr>';
my @files = glob "./thumbnails/*.png ./thumbnails/*.jpg";
my $count =0;

foreach (@files){
if($count % 5 <1){
print "</tr><tr>";
}
print "<td><img src=\"";
print $_;
print "\"></td>";
$count++;
}

print '</tr></table>';

sub MakeThumbnails{
my ($name) = @_;
my $dir = './thumbnails';
(my $newname = $name) =~ s/\/images/\/thumbnails/;
my $img = Image::Magick->new;
my $x;
$x = $img->Read($name);
$x = $img->Resize(geometry=>"200x150");
$x = $img->Write($newname);
}


サムネイルの作成と表示を同時に実施している。 表示(リロード)するたびにサムネイルを上書きするのはムダかもしれない。 枚数が増えてくると重くなるから、ページを分けたりする必要もあるだろう。 サムネイルをクリックしたら元画像を表示するとか、コメントをつけたり削除したりできれば、 表示部分はOK。

あとは、アップロード部分か。

perlでimagemagickを使いたくて、cpanでインストールしたらエラーになった。

調べると、yumでいれればうまくいくとのこと。

yum install ImageMagick-perl


なんで・・?