Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Brak pamieci serwera na zmniejszenie zdjecia
Forum PHP.pl > Forum > PHP
macbb
Wiem, że temat zmniejszania zdjęć za pomocą GD był już opisywany wiele razy ale mam pytanie dotyczące tego kodu.
Skrypt przetwarza wysyłane zdjęcie i dodaje go w dwóch rozmiarach (jedno normalne drugie miniaturka) do katalogu galeria. Wszystko działa poprawnie do czasu gdy użytkownik nie doda pod rząd np: 10 zdjęć o rozmiarze 2-3 MB wyskakuje wówczas błąd skryptu w którym brakuje pamięci serwera.
Zwiększyłem już limit za pomocą
CODE
ini_set ( "memory_limit", "128m");

jednak rozwiązało to problem na krótko i błąd znów zaczął się pokazywać.

Czy jest jakaś metoda na optymalizację tego kodu lub czyszczenie pamięci serwera przed rozpoczęciem wykonywania skryptu??


CODE
if(isSet($_POST[dodaj_zdj])){

$plik_tmp = $_FILES['foto']['tmp_name'];
$plik_nazwa = $_FILES['foto']['name'];
$plik_rozmiar = $_FILES['foto']['size'];

$sp = explode(".",$plik_nazwa);
$count_sp = count($sp) - 1;


if($sp[$count_sp] == "gif" or $sp[$count_sp] == "jpg" or $sp[$count_sp] == "JPG") {

list($width, $height) = getimagesize($plik_tmp);

if($width>$height){

move_uploaded_file($plik_tmp, '../galeria/org/'.$plik_nazwa);

list($width, $height) = getimagesize('../galeria/org/'.$plik_nazwa);

$image_p = imagecreatetruecolor(640, 480);
$image = imagecreatefromjpeg('../galeria/org/'.$plik_nazwa);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, 640, 480, $width, $height);
imagejpeg($image_p,'../galeria/'.$plik_nazwa,80);


$image_p2 = imagecreatetruecolor('200', '150');
$image = imagecreatefromjpeg('../galeria/org/'.$plik_nazwa);
imagecopyresampled($image_p2, $image, 0, 0, 0, 0, '200', '150', $width, $height);
imagejpeg($image_p2,'../galeria/mini/'.$plik_nazwa,80);




$sql4 = "INSERT INTO galeria_zdj VALUES('$id', '$plik_nazwa', '$_POST[grupa]', 'h')";

if(!mysql_query($sql4))
{
echo("Wystąpił błąd: nieprawidłowe zapytanie1");
@mysql_close();
}

imagedestroy($image_p);
imagedestroy($image_p2);
unlink('../galeria/org/'.$plik_nazwa);
// unlink('../galeria/'.$plik_nazwa);

}elseif($height>$width){

move_uploaded_file($plik_tmp, '../galeria/org/'.$plik_nazwa);

list($width, $height) = getimagesize('../galeria/org/'.$plik_nazwa);



$image_p = imagecreatetruecolor(480, 640);
$image = imagecreatefromjpeg('../galeria/org/'.$plik_nazwa);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, 480, 640, $width, $height);
imagejpeg($image_p,'../galeria/'.$plik_nazwa,80);



$image_p2 = imagecreatetruecolor('150', '200');
$image = imagecreatefromjpeg('../galeria/org/'.$plik_nazwa);
imagecopyresampled($image_p2, $image, 0, 0, 0, 0, '150', '200', $width, $height);
imagejpeg($image_p2,'../galeria/mini/'.$plik_nazwa,80);



$sql4 = "INSERT INTO galeria_zdj VALUES('$id', '$plik_nazwa', '$_POST[grupa]', 'v')";

if(!mysql_query($sql4))
{
echo("Wystąpił błąd: nieprawidłowe zapytanie1");
@mysql_close();
}
imagedestroy($image_p);
imagedestroy($image_p2);
unlink('../galeria/org/'.$plik_nazwa);
}
}

}
erix
Zmniejszaj obrazki za pomocą imageMagick; wydajniejsze.
macbb
Czy mógłbyś mi podać jak przerobić ten skrypt na ImageMagick ponieważ nigdy z tym nie pracowałem i nie wiem do końca jak tego używać lub podać inna metodę w php która by rozwiązała problem.
erix
http://www.google.com/search?client=opera&...-8&oe=utf-8

Google nie bolą.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.