WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:画像ギャラリー用のCGIについて

0:[投稿] choco [2005/05/13 09:28 ][環境:Win2Kpro 解らない]

はじめまして!タイトルの様なスクリプトを作りたくて
WEBを回りながら初めてPerlをさわってみました。
フリーのスクリプトを色々と見たのですが、自分がやりたい事と
微妙に違っていましたので挑戦したのですが
途中まで試して行き詰まってしまいました、
元々HPの更新もHP作成ソフト任せで全くの素人です^^;
作りたいCGIのポイント
1.特定のフォルダに入っている元画像とサムネイルを読み込む
2.サムネイルを横一列に並べてクリックすると元画像を別Frameに表示
3.サムネイルが一定の数(例えば10枚)を超えると次のサムネイルページ?を表示できるようにして、数十枚のサムネイルが並ばないようにしたい
4.元画像の大きさやレイアウトをCGIでコントロールしたい

以上よくわからない文章でスミマセン^^; 個人的にはForeachで配列から抜き出した文字をどのように変数に入れて活用すれば良いか
考えつきませんでした....全くの素人でスミマセン

#イメージのあるフォルダのURL
$ImgDir ='./ul_img/x_img/';

#サムネイルのあるフォルダのURL
$TImgDir ='./ul_img/x_timg/';


#画像ファイルの読み込み#

#元サイズの画像の読み込み
opendir(IMG,$ImgDir) || die('FILE OPEN ERROR!');
@file = grep(!/^\./,readdir(IMG));
close (IMG);
#サムネイルの読み込み
opendir(TIMG,$TImgDir) || die('FILE OPEN ERROR!');
@Tfile = grep(!/^\./,readdir(TIMG));
close (TIMG);
#ファイルの並び替え
@file = sort(@file);
@Tfile = sort(@Tfile);
#dataに書き込み
#イメージURL
foreach $file_url (@file){
if (($file_url =~ /\.jpg/i)||($file_url =~ /\.png/i)||($file_url =~ /\.gif/i)){
       $file_url = "${file_url}\n";
        push (@files,$file_url);
                                }
                                }
open (IMG_URL,">url_data.text")|| die('FILE OPEN ERROR!');
print IMG_URL @files ;
close (IMG_URL);
#サムネイルURL
open (IMG_URL,"<url_data.text")|| die('FILE OPEN ERROR!');
@list = <IMG_URL>;
foreach $Tfiles (@Tfile){
if (($Tfiles =~ /\.jpg/i)||($Tfiles =~ /\.png/i)||($Tfiles =~ /\.gif/i)){
       $lists = shift(@list);      
       $Tfiles ="<td bgcolor=\"\#00000\" width=\"75\" height=\"75\" align=\"center\"><a href=\"./ul_img/x_img/${lists}\" target=\"iframe\"><img border=\"0\" src= \"./ul_img/x_Timg/${Tfiles}\"></td>\n\n";
        push (@Tfiles_url,$Tfiles);
                        }
                        }    
close (IMG_URL);
open (TIMGDATA,">T_data.text")|| die('FILE OPEN ERROR!');
            print TIMGDATA @Tfiles_url ;
            close (TIMGDATA);

#ファイル表示
print "Content-type: text/html\n\n";
print <<HTML_head;
<HTML><head></head>
<BODY>
<table border=\"1\">
 <tr>
HTML_head
open (TIMGDATA,"<T_data.text");
@image = <TIMGDATA>;
foreach $image_t(@image){
print $image_t;
}
print <<HTML_foot;
   </tr>
</table>
</BODY></HTML>
HTML_foot


1:[回答] ジン [2005/05/13 14:08 ]

こんにちは。

サムネイルファイル名のリストは作ったけど表示方法が分からない、ってことですか?
でしたら、以下のようにしてはどうしょうか。

※@thumnail_listにサムネイルファイル名のリストを格納していると仮定して。


print "Content-Type: text/html\n\n";
print "<html>\n";
print "<head></head>\n";
print "<body>\n";

$count = @thumnail_list;
if ($count > 0)
{
    print "<table cellspacing=\"0\" cellpadding=\"4\">\n";
    for ($cnt = 1; $cnt <= $count; $cnt++)
    {
        print "<tr>\n";
        print "<td width=\"30\" align=\"center\">$cnt</td>\n";
        print "<td><img src=@thumnail_list[$cnt-1] width=\"40\" height=\"40\"></td>\n";
        print "</tr>\n";
    }
    print "</table>\n";
}

print "</body>\n";
print "</html>\n";


2:[完了] choco [2005/05/13 15:26 ]

ありがとうございました!
何となくヒントを戴いて形が見えてきました
頑張ってみます!

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World