Witam
Założenie jest takie:
1. Wygenerować miniaturkę dużego zdjęcia
Przy czym:
a. jeśli miniaturka o określonej szerokości już istnieje to ją wyświetlić bez generowania
b. jeśli nie istnieje - wygenerować, zapisać i wyświetlić

Przerobiłem kod znaleziony na http://compzone.org/art-Generowanie+miniatur+w+PHP-2.html
Proszę o wskazówki czy to jest poprawnie zrobione, ze szczególnym naciskiem na pkt. a

  1. <?php
  2. //szerokosc z GET
  3. if(isset($_GET['szer']) && is_numeric($_GET['szer'])){ $szer=(int)$_GET['szer'];}
  4. else{  $szer=100;}
  5. //nazwa z GET
  6. if(isset($_GET['zdjecie'])){
  7.    //$zdjecie = ereg_replace(\"[^A-Za-z0-9_]\", \"\", $_GET['zdjecie']);
  8.    //$zdjecie=strip_tags($_GET['zdjecie']);
  9.    
  10. //Przypisujemy do zmiennej $img_path ścieżke do obrazka
  11.     $img_path = strip_tags($_GET['zdjecie']);
  12.  
  13. //Tworzymy scieżkę do miniaturki
  14.     $thumb_path = 'tn/'.substr($img_path,0,strrpos($img_path, '.')).'_'.$szer.'.jpg';    
  15.        
  16.    //jesli plik  istnieje
  17.    if(file_exists($thumb_path)){
  18.        header('Content-type: image/jpeg');
  19.        readfile($thumb_path);
  20.    }
  21.    // jesli nie
  22.    else {
  23.    //====================
  24.    // Skopiowano z compzone.org/art-Generowanie+miniatur+w+PHP-2.html
  25.    //====================
  26.     //ustalamy maksymalny dopuszczalny rozmiar miniatury
  27.     $max_width=$max_height=$szer;
  28.     //Sprawdzamy czy obraz istnieje
  29.    if(!file_exists($img_path))die('Plik obrazu nie istnieje
  30.  
  31. ');
  32.     //Pobieramy informacjie o obrazie
  33.     $img_attr = getimagesize($img_path);
  34.     //Sprawdzamy czy obraz jest wiekszy na szerokość czy na wysokość
  35.     // i zmniejszamy odpowiednio rozmiar
  36.     // $img_attr[0] - szerokosc, $img_attr[1] - wysokość
  37.     if($img_attr[0]>$img_attr[1]){
  38.            $scale = $img_attr[0] / $max_width;
  39.     }
  40.         else{
  41.         $scale = $img_attr[1] / $max_height;
  42.     }    
  43.         //Tworzymy obraz miniaturki
  44.     $w = floor($img_attr[0]/$scale);
  45.     $h = floor($img_attr[1]/$scale);
  46.     $thumb = imagecreatetruecolor($w,$h);
  47.       //Kopiujemy obraz pomniejszajac go,
  48.     imagecopyresampled($thumb, imagecreatefromjpeg($img_path), 0, 0, 0, 0, $w, $h, $img_attr[0], $img_attr[1]);
  49.       //Zapisujemy do pliku (jakość 85)
  50.     imagejpeg($thumb,$thumb_path,75);
  51.        //====================
  52.    header('Content-type: image/jpeg');
  53.    $image = imagecreatefromjpeg($thumb_path);  
  54.    imagejpeg($image);  
  55.    imagedestroy($image);  
  56.    
  57.  }
  58.    //====================
  59.    // koniec
  60.    //====================
  61.  
  62.    }
  63. //jesli nie ma pliku źródłowego    
  64. else{
  65. header('Content-type: image/jpeg');
  66.        readfile('tn/nophoto.jpg');
  67.        }
  68.  
  69. ?>