2012-02-04 12 views
0

私はPHPの基本的なスキルしか持っていないので、ウェブサイトに写真ギャラリーを置く必要がありました。このウェブサイトはプログラミングの知識のない人が使うので、簡単な使い方が必要でした。写真付きのフォルダをアップロードする(編集:FTP経由)と、フォトギャラリーのサムネイルが自動的に表示され、サムネイルをクリックすると完全に表示されますサイズイメージ。PHP/GD - ギャラリー内の写真のサムネイル:ランダム表示

私は、オンザフライでサムネイルを生成するスクリプトを使用しました。このスクリプトはブラウザで直接呼び出すとうまくいくようです。サムネイルを取得します。しかし、自分のページにギャラリーを表示すると、各画像ソースはスクリプトの呼び出しであり、サムネイルのランダムなサブセットだけが表示され、他のものは代替テキストのみが表示されます。たとえば、8のギャラリーで、私が3,4,7を取得し、1,3,5,6,8をリフレッシュした後で初めてページを表示したとき:

エラーメッセージは表示されませんでした他の親指で読み込まれていないが、ここでPHPの私の基本的なスキルが私に失敗するかもしれない、おそらく私はちょうどそのようなエラーメッセージを見つけるためにコウえていない。

<a href="resources/galleries/example.jpg"><img src="mini.php?f=example.jpg" alt="Photo" /></a> 

とmini.php GDを使用:

<?php 
$ratio = 150; 
$dir = './resources/galleries'; 

if (!isset($_GET['f'])) { 
    header('location: index.php'); 
    exit(); 
} 
else { 
    $image = $_GET['f']; 
    $tableau = @getimagesize($dir.'/'.$image); 
    if ($tableau == FALSE) { 
     header('location: index.php'); 
     exit(); 
    } 
    else { 
     // if jpeg 
     if ($tableau[2] == 2) { 
      $src = imagecreatefromjpeg($dir.'/'.$image); 
      if ($tableau[0] > $tableau[1]) { 
      $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); 
      imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); 
      } 
      else { 
      $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); 
      imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); 
      } 
      header ("Content-type: image/jpeg"); 
      imagejpeg ($im); 
     } 
     elseif ($tableau[2] == 3) { // PNG 
      $src = imagecreatefrompng($dir.'/'.$image); 
      if ($tableau[0] > $tableau[1]) { 
       $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); 
       imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); 
      } 
      else { 
       $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); 
       imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); 
      } 
      header ("Content-type: image/png"); 
      imagepng ($im); 
     } 
    } 
} 
?> 

任意のアイデアをここで

は私のスクリプトの呼び出しがありますか?

答えて

0

ユーザーがあなたのウェブサイトにFOLDERをアップロードしたとしますか?写真の名前にアップロード時にチェックしない特殊文字やスペースが含まれている可能性がありますか?

+0

実際には、ウェブサイトの外部にアップロードするだけなので、いいえ、ファイル名はチェックされません。しかし、ここでは、名前を二重チェックして問題はありません。とにかく、私が言ったように、各サムネイルはときどき表示され、サムネイルがブラウザで直接呼び出されるとすべてのサムネイルが表示されます。 – Steph

+0

パスエラーになりますか? mini.phpはサブフォルダにありますか?もしそれが事実で、あなたがイメージからそれを呼び出すなら、おそらくあなたの '$ dir。'/''はもう適切ではない...そうでなければ、私は何の解決策も見つけられなかった –

関連する問題