2012-02-04 3 views
0

저는 PHP에서만 기본 기술을 가지고 있으며 웹 사이트에 사진 갤러리를 설치해야했습니다. 이 웹 사이트는 프로그래밍 지식이 거의없는 사람들이 사용하기 때문에 사진이있는 폴더를 업로드 (FTP를 통해 편집)하고 사진 갤러리 축소판이 자동으로 표시되며 축소판을 클릭하면 전체를 표시합니다 크기 이미지.PHP/GD - 갤러리의 사진 축소판 그림 : 임의 표시

비행 중에 미리보기 이미지를 생성하는 스크립트를 사용했습니다. 이 스크립트는 브라우저에서 직접 호출하면 제대로 작동하는 것 같습니다. 내 미리보기 이미지를 얻을 수 있습니다. 그러나 내 페이지에 갤러리를 표시 할 때 각 이미지 소스는 내 스크립트 호출이며 축소판 그림의 임의의 부분 집합 만 표시되고 나머지는 대체 텍스트 만 표시됩니다. 예를 들어 8의 갤러리에서 갤러리를 처음 볼 때 나는 3,4,5 번 밖에 얻을 수없는 페이지를 표시합니다.

오류 메시지가 없습니다. 다른 엄지 손가락에 의해로드되지,하지만 여기에 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

사용자가 웹 사이트에 폴더를 업로드한다고합니까? 사진 이름에 업로드시 확인하지 않는 특수 문자 또는 공백이있을 수 있습니까?

+0

사실 웹 사이트 외부에서 FTP로 업로드하기 때문에 파일 이름을 확인하지 않습니다. 그러나 여기에서는 이름을 두 번 확인했는데 문제가 없습니다. 어쨌든, 내가 말했듯이 각 축소판은 때로는 표시되며, thumbnailer가 브라우저에서 직접 호출 될 때 모두 작동합니다. – Steph

+0

확인. 경로 오류 일 수 있습니까? mini.php는 하위 폴더에 있습니다. 만약 당신이 그것을 이미지에서 불러 낸다면, 아마도 '$ dir.'/ ''이 더 이상 적절하지 않기 때문입니다. 그렇지 않다면, 어떤 해결책도 찾지 못해서 미안합니다 ... –

관련 문제