CGI-BBS > 画像処理 > その他 > 画像をランダムで切り替え表示させる


カレッヂ
カレッヂ


質問者 molly  投稿日 3/27(火) 04:16:01
「ランダムに画像を表示させる」というCGIを利用して
占いコーナーをHPにUPしていたのですが、最近プロバイダを
HI-HOに変えたところ、同じようにアップしただけでは
作動しなくなりました。
CGIプログラムは以下の通りです。
***************************************
#! /usr/local/bin/perl

$jpgdir=$ENV{'PATH_TRANSLATED'};
%JpgList=(
  '1','Lucky1.JPG',
  '2','Lucky2.JPG',
  '3','Lucky3.JPG',
  '4','Lucky4.JPG',

);
srand;
$jpg=int(rand(4))+1;
$pic=`cat $jpgdir/$JpgList{$jpg}`;
print"Content-type: image/jpeg\n\n";
print $pic;
*************************************************
本に載っていたものをほとんどそのまま使っていたので
プログラム知識はありません。

HI-HOの場合、画像はhtmlディレクトリの中、CGIプログラムはcgi-binと
置き場所が別になっている為、別々にアップロードはしてみたのですが
CGIプログラムは動いているものの画像が壊れていて表示されません。
(直接画像ファイルを指定すると表示されます)
自分では原因がわからないので説明も上手く出来ませんが
2行目の$jpgdir=$ENV{'PATH_TRANSLATED'};はたぶん画像のある
ディレクトリを示していると思うのですが、なんとなくこの部分を
変えなくてはいけないのかなと考えています。

かれこれ引越しから一ヶ月、いろいろ試してはいるのですが
もはやお手上げ状態です。どなたか教えて下さい。お願いします。



回答者 谷口  [削除]  投稿日 3/27(火) 09:05:15
画像ファイルを置いているディレクトリの指定については、
実際に設置しているディレクトリ構造を示していただかないことには
恐らくどなたにもわからないでしょう。
ディレクトリの設定の問題だけなら、その部分を環境変数ではなく
相対あるいは絶対パスで指定すればOKだと思いますが、
1つ気になるのは

$pic=`cat $jpgdir/$JpgList{$jpg}`;

この記述です。HI-HOさんではcatコマンドは使えるのでしょうか?
回答者 羊相談員  [削除]  投稿日 3/27(火) 23:29:52
srand;
$file = './Lucky' . int(rand(4) + 1) . '.JPG';
$size = (stat($file))[7];
open IN, $file;
binmode IN;
print "Content-type: image/jpeg\n\n";
read(IN, $_, $size);
print;
close IN;
exit;

この方法だと画像ファイルをデータファイルとして扱うので
CGIと同じ場所に画像を置いても多分大丈夫だと思います。
srand;はperl5の場合はなくてもいいです。
質問者 molly  [削除]  投稿日 3/29(木) 11:37:00
谷口様、羊相談員様ご回答ありがとうございました。

>谷口様
情報提供が少なくて解りづらい質問にもかかわらず
ご回答いただきありがとうございます。
HI-HOの会員サポートページのCGIについての説明は
私にとって大変解りづらく、使えるコマンドについても
現在問い合わせをしている最中です。
返事がなかなか来ないので、あせってここに書き込みを
してしまいましたが、自分自身もう少し勉強してから
書き込むべきでした。申し訳ありません。

>羊相談員様
早速コピーして試させていただきましたが
上手く動いてくれませんでした。
他のことが原因しているのかもしれません。
ご迷惑をおかけしました。
取りあえず、プロバイダに再度問い合わせて
回答を待ちます。
それでもう少し頑張ってみます。
相談に乗っていただきどうもありがとうございました。

このページは終了したので返信(回答)は書きこめません

Web裏技