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.htmlProszę o wskazówki czy to jest poprawnie zrobione, ze szczególnym naciskiem na pkt. a
<?php
//szerokosc z GET
if(isset($_GET['szer']) && is_numeric($_GET['szer'])){ $szer=(int
)$_GET['szer'];} else{ $szer=100;}
//nazwa z GET
if(isset($_GET['zdjecie'])){ //$zdjecie = ereg_replace(\"[^A-Za-z0-9_]\", \"\", $_GET['zdjecie']);
//$zdjecie=strip_tags($_GET['zdjecie']);
//Przypisujemy do zmiennej $img_path ścieżke do obrazka
//Tworzymy scieżkę do miniaturki
$thumb_path = 'tn/'.substr($img_path,0
,strrpos($img_path, '.')).'_'.$szer.'.jpg';
//jesli plik istnieje
header('Content-type: image/jpeg'); }
// jesli nie
else {
//====================
// Skopiowano z compzone.org/art-Generowanie+miniatur+w+PHP-2.html
//====================
//ustalamy maksymalny dopuszczalny rozmiar miniatury
$max_width=$max_height=$szer;
//Sprawdzamy czy obraz istnieje
');
//Pobieramy informacjie o obrazie
//Sprawdzamy czy obraz jest wiekszy na szerokość czy na wysokość
// i zmniejszamy odpowiednio rozmiar
// $img_attr[0] - szerokosc, $img_attr[1] - wysokość
if($img_attr[0]>$img_attr[1]){
$scale = $img_attr[0] / $max_width;
}
else{
$scale = $img_attr[1] / $max_height;
}
//Tworzymy obraz miniaturki
$w = floor($img_attr[0
]/$scale); $h = floor($img_attr[1
]/$scale); $thumb = imagecreatetruecolor($w,$h);
//Kopiujemy obraz pomniejszajac go,
imagecopyresampled($thumb, imagecreatefromjpeg($img_path), 0, 0, 0, 0, $w, $h, $img_attr[0], $img_attr[1]);
//Zapisujemy do pliku (jakość 85)
imagejpeg($thumb,$thumb_path,75);
//====================
header('Content-type: image/jpeg'); $image = imagecreatefromjpeg($thumb_path);
imagejpeg($image);
imagedestroy($image);
}
//====================
// koniec
//====================
}
//jesli nie ma pliku źródłowego
else{
header('Content-type: image/jpeg'); }
?>
Ten post edytował kleszczoscisk 11.04.2009, 16:06:01