<?
/*
Funkcja która zapisuje przekazywany w formularzu obrazek do odpowiedniego format
u oraz rozdzielczości.
Funkcja posiada 4 (cztery) argumenty,
$roz - rodzielczość w jakiej ma być zapisany nowy obraz
$img - nazwa pola z którego przekazywany jest obrazek
$sciezka - sciezka zapisu obrazka
$nnazwa - nowa nazwa nadana obrazkowi po stronie serwera
*/
function zap_img_x($roz, $img, $sciezka, $nnazwa){
///echo "Jaka rozdzielczość - $roz<br>";
//echo "Jaka nazwa pliku - $img<br>";
//echo "Jaka ścieżka zapisu - $sciezka<br>";
//echo "Nowa nazwa pliku - $nnazwa<br>";
//1.) Określam parametry zdjęcia - typ, zapisuje ściężkę tmp_name do zmiennej - plik
$typ = $_FILES['img']['type'];
$plik = $_FILES['img']['tmp_name'];
//echo "PLIK - $plik<br>";
//2.) Określam szerokość w pixelach
$x = $roz;
//echo "X - $x<br>";
//3.) Nadaję nową nazwę dla zdjęcia
$mojaNazwa1 = $nnazwa . '.jpg';
//echo "Nazwa - $mojaNazwa1<br>";
//5.) Zapisuje obraz w odpowiednim formacie
//Przetwarzanie obrazka z formatu jpg i jpeg
if (ereg("image/jpeg", $typ) or
ereg("image/pjpeg", $typ)){
$zdj = ImageCreateFromJpeg($plik);
$zdjx = ImageSX($zdj);
$zdjy = ImageSY($zdj);
$y = ceil($zdjy*($x/$zdjx)); $nowezdj = imagecreatetruecolor($x, $y);
imagecopyresampled($nowezdj,$zdj,0,0,0,0,$x,$y,$zdjx,$zdjy);
imagejpeg($nowezdj, $sciezka . $mojaNazwa1 ,120);
imagedestroy($zdj);
//echo "$zdjx, $zdjy, $x, $y, $nowezdj<br> $sciezka . $mojaNazwa1 ok";
}
//Przetwarzanie obrazka z formatu gif
elseif(ereg("image/gif", $typ)){
$zdj = ImageCreateFromGIF($plik);
$zdjx = ImageSX($zdj);
$zdjy = ImageSY($zdj);
$y = ceil($zdjy*($x/$zdjx)); $nowezdj = imagecreatetruecolor($x, $y);
imagecopyresampled($nowezdj,$zdj,0,0,0,0,$x,$y,$zdjx,$zdjy);
imagejpeg($nowezdj, $sciezka . $mojaNazwa1 ,100);
imagedestroy($zdj);
//echo "ok";
}
//Przetwarzanie obrazka z formatu png
elseif(ereg("image/png", $typ)){
$zdj = ImageCreateFromPng($plik);
$zdjx = ImageSX($zdj);
$zdjy = ImageSY($zdj);
$y = ceil($zdjy*($x/$zdjx)); $nowezdj = imagecreatetruecolor($x, $y);
imagecopyresampled($nowezdj,$zdj,0,0,0,0,$x,$y,$zdjx,$zdjy);
imagejpeg($nowezdj, $sciezka . $mojaNazwa1 ,100);
imagedestroy($zdj);
//echo "ok";
}
else{
echo("Niepoprawny format"); }
}
?>
Co do memory limit - to działa to tak, żeby nie przerwać skryptu należy wcześniej opracować warunek, który sprawdza
szerokość x wysokość obrazka i pomnożyć przez odpowiedni współczynnik. W zależności od rozdzielczości obrazka waha się on od 3 i więcej - najbardziej optymalny z moich testów to 5
Nie należy przekroczyć 3 MB pamięci po stronie serwera