Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
jak za pomocą php pomniejszyć zdiecie wgrywane na serwer o ile nei jest ono określonego rozmiaru ?? php wystarczy czy trzeba go z czyms połączyć ?
Offline
PHP będzie potrzebowało jeszcze biblioteki obsługującej operacje na obrazkach - np. GD, GD2, ImageMagic etc.
Przejrzyj tą stronę: http://pl.php.net/manual/pl/ref.image.php jest sporo przykładów i opisy funkcji związanych z operacjami na obrazkach.
Offline
GD:
$obrazek = imagecreatefromjpeg('obrazy/galeria/'.$_FILES['plik']['name']); $rozmiar = GetImageSize('obrazy/galeria/'.$_FILES['plik']['name']); if ($rozmiar[0] > $rozmiar[1]) { // bardziej horyzontalny czy vertykalny? $szerokosc=200; // tutaj przypisuję na stale, ale można przypisać wartosc oryginalna, jesli nie zbyt duża/mała $wysokosc=($szerokosc / $rozmiar[0]) * $rozmiar[1]; // proporcje } else { $wysokosc=200; // jw. $szerokosc=($wysokosc / $rozmiar[1]) * $rozmiar[0]; } $miniatura = imagecreatetruecolor($szerokosc, $wysokosc); // miejsce na obrazek po zmianie wymiarów imagecopyresampled($miniatura, $obrazek, 0, 0, 0, 0, $szerokosc, $wysokosc, $rozmiar[0], $rozmiar[1]); // zmiana rozmiaru imagedestroy($obrazek); imagejpeg($miniatura, 'obrazy/galeria/min'.$_FILES['plik']['name'])); // zapis na dysk
Offline
a jakiś dokładniejszy manual po polsku odnośnie gd ?
Offline
GD:
troche to przeedytowałem chciałem żeby po wgraniu jpg na server został zmniejszony do width="600" i przycioł wysokość do tego o ile mniejsze pliki powieksza o tyle sypie sie jak pliki są wieksze
29. $obrazek = imagecreatefromjpeg('test/'.$_FILES['plik']['name']);
30. $rozmiar = GetImageSize('test/'.$_FILES['plik']['name']);
34. $szerokosc=600;
35. $wysokosc=($szerokosc / $rozmiar[0]) * $rozmiar[1];
37. $standart = imagecreatetruecolor($szerokosc, $wysokosc);
38. imagecopyresampled($standart, $obrazek, 0, 0, 0, 0, $szerokosc, $wysokosc, $rozmiar[0], $rozmiar[1]);
41. imagejpeg($standart, 'test/'.$_FILES['plik']['name']);
błędy
Plik nie został załadowany...
Warning: imagecreatefromjpeg(test/1.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/www/private/rumi/plik_wgraj.php on line 29
Warning: getimagesize(test/1.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home/www/private/rumi/plik_wgraj.php on line 30
Warning: Division by zero in /home/www/private/rumi/plik_wgraj.php on line 35
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/www/private/rumi/plik_wgraj.php on line 37
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/www/private/rumi/plik_wgraj.php on line 38
Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/www/private/rumi/plik_wgraj.php on line 41
Offline
Wygląda na to, że plik który wysyłasz nie istnieje. PHP nie może go otworzyć - pierwszy warning - reszta wynika właśnie z tego. Dziwne jest jednak to, że działa dla powiększania, a dla pomniejszania już nie. Upewnij się, że używasz:
move_uploaded_file($_FILES['plik']['tmp_name'],'test/.$_FILES['plik']['name'])
folder ma odpowiednie uprawnienia do zapisu i pole "file" we forumularzu nazywa się "plik".
Offline
jush działa błąd był w ... formularzu :] To teraz jeszcze miniaturke,zmiana nazwy przy zapisie, zapis informacjo do bazy i będzi epiknie
EDIT: i zrobione :) thx za pomoc
Offline
o co mu chodzi w tym komunikacie ??
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1464 bytes) in /home/www/private/rumi/plik_funkcja.php on line 35
czy podobnym tym :
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 11424 bytes) in /home/www/private/rumi/plik_funkcja.php on line 2
za duze pliki cyz jak ?
pliki na server się wgrywają ale nei zostają pomniejszone
skrypt :
<?
$obrazek = imagecreatefromjpeg('test/'.$nazwa_pliku);
$rozmiar = GetImageSize('test/'.$nazwa_pliku);
if ($rozmiar[0] >= $rozmiar[1])
{
if($rozmiar[0] > 550)
{
$szerokosc=550; // tutaj przypisuję na stale, ale można przypisać wartosc oryginalna, jesli nie zbyt duża/mała
$wysokosc=($szerokosc / $rozmiar[0]) * $rozmiar[1]; // proporcje
$standart = imagecreatetruecolor($szerokosc, $wysokosc); // miejsce na obrazek po zmianie wymiarów
imagecopyresampled($standart, $obrazek, 0, 0, 0, 0, $szerokosc, $wysokosc, $rozmiar[0], $rozmiar[1]); // zmiana rozmiaru
imagejpeg($standart, 'test/'.$nazwa_pliku); // zapis na dysk
}
$szerokosc_m=80; // tutaj przypisuję na stale, ale można przypisać wartosc oryginalna, jesli nie zbyt duża/mała
$wysokosc_m=($szerokosc_m / $rozmiar[0]) * $rozmiar[1]; // proporcje
$miniaturka = imagecreatetruecolor($szerokosc_m, $wysokosc_m); // miejsce na obrazek po zmianie wymiarów
imagecopyresampled($miniaturka, $obrazek, 0, 0, 0, 0, $szerokosc_m, $wysokosc_m, $rozmiar[0], $rozmiar[1]); // zmiana rozmiaru
imagejpeg($miniaturka, 'test/m_'.$nazwa_pliku); // zapis na dysk
}
else
{
if($rozmiar[1] > 550)
{
$wysokosc=550; // tutaj przypisuję na stale, ale można przypisać wartosc oryginalna, jesli nie zbyt duża/mała
$szerokosc=($wysokosc / $rozmiar[1]) * $rozmiar[0]; // proporcje
$standart = imagecreatetruecolor($szerokosc, $wysokosc); // miejsce na obrazek po zmianie wymiarów
imagecopyresampled($standart, $obrazek, 0, 0, 0, 0, $szerokosc, $wysokosc, $rozmiar[0], $rozmiar[1]); // zmiana rozmiaru
imagejpeg($standart, 'test/'.$nazwa_pliku); // zapis na dysk
}
$wysokosc_m=80; // tutaj przypisuję na stale, ale można przypisać wartosc oryginalna, jesli nie zbyt duża/mała
$szerokosc_m=($wysokosc_m / $rozmiar[1]) * $rozmiar[0]; // proporcje
$miniaturka = imagecreatetruecolor($szerokosc_m, $wysokosc_m); // miejsce na obrazek po zmianie wymiarów
imagecopyresampled($miniaturka, $obrazek, 0, 0, 0, 0, $szerokosc_m, $wysokosc_m, $rozmiar[0], $rozmiar[1]); // zmiana rozmiaru
imagejpeg($miniaturka, 'test/m_'.$nazwa_pliku); // zapis na dysk
}
$link1 ='test/'.$nazwa_pliku;
$link2 ='test/m_'.$nazwa_pliku;
?>
z mniejszyymi sobie radzi z wiekszymi niet :]
EDIT:
sie wyjaśniło:
Pytanie
Podczas pracy pojawia się komunikat:
Allowed memory size of 8388608 bytes exhausted (tried to allocate YYYY bytes)
Odpowiedź
Problem jest spowodowany niewystarczającą ilością pamięci przypisanej do skryptów.
Należy zwrócić się do administratora serwera z prośbą aby zwiększył on dostępną dla php pamięć.
Optymalna wartość dla sklepu to 16 megabajtów.
Wartość 8388608 z komunikatu to ilość obecnie przypisanej pamięci.
pytanie a jakim najwiekszym zdięciem sobie skrypt poradzi ?
Offline
Strony: 1