[PHP] Zmiana rozmiaru obrazka na serwerze

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Ahelor
Posty: 14
Rejestracja: ndz lip 10, 2005 10:53 am
Lokalizacja: Jaworzno
Kontakt:

[PHP] Zmiana rozmiaru obrazka na serwerze

Post autor: Ahelor »

Witam
Chciałem zapytać czy jest możliwa zmiana (na stałe) rozmiarów zdjęcia po tronie serwera. Ogólnie codzi o to aby user wysyłał zdjęcie przez formularz a ono było dostosowywane i zapisywane na koncie?
Jeśli tak to byłbym wdzięczny za jakieś proste rozwiązania (tylko PHP).
paszczak
Nowy
Nowy
Posty: 123
Rejestracja: ndz paź 03, 2004 2:21 pm
Lokalizacja: Sopot
Kontakt:

Re: [PHP] Zmiana rozmiaru obrazka na serwerze

Post autor: paszczak »

a moze troche poszukac... :roll:

np. w manualu php:
http://pl.php.net/getimagesize
Ahelor
Posty: 14
Rejestracja: ndz lip 10, 2005 10:53 am
Lokalizacja: Jaworzno
Kontakt:

Re: [PHP] Zmiana rozmiaru obrazka na serwerze

Post autor: Ahelor »

Ehem, może się nie zrozumieliśmy. Ja nie potrzebuje generować miniaturki z PHP, ale chcę zapisać NA serwer obrazek zmniejszony w stosunku do wysyłanego prze formularz.
Podam inny przykład zastosowania: robię galerię w której na jednej stronie byłoby dużo miniaturek. Generowanie każdej z nich przez GD obciążało by nieźle serwer. Dlatego przydałby się skrypt dostępny dla admina który wysyłał by na serwer jeden plik w oryginalnym rozmiarze a drugi jako miniaturkę.

Mam nadzieję że jaśniej wytłumaczyłem.
paszczak
Nowy
Nowy
Posty: 123
Rejestracja: ndz paź 03, 2004 2:21 pm
Lokalizacja: Sopot
Kontakt:

Re: [PHP] Zmiana rozmiaru obrazka na serwerze

Post autor: paszczak »

Ech... troche pracy wlasnej....

Kod: Zaznacz cały

   // kopiujesz uploadowany plik

move_uploaded_file($_FILES['nazwa_z_formularza']['tmp_name'], $nazwa_pliku);

   // sprawdzasz jego rozmiar
	
list($width, $height) = getimagesize($nazwa_pliku);

   // ustalasz nowe wymiary

$scale = min($MAX_NEW_WIDTH/$width, $MAX_NEW_HEIGHT/$height);
$new_width = floor($scale*$width);
$new_height = floor($scale*$height);

   // wczytujesz fotke

$source = imagecreatefromjpeg($nazwa_pliku);

   // robisz nowa fotke

$dest = imagecreatetruecolor($new_width, $new_height);

   // kopiujesz ze zmiana rozmiaru

imagecopyresized($dest, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

   // zapisujesz do pliku

imagejpeg($zoom,$nazwa_nowego_pliku);
	
unlink($nazwa_pliku);

jakos tak.... przecie calosc skryptu jest niezalezna czy robisz do jakiego rozmiaru przeskalowujesz (np. do miniaturki)... jedyna roznica, ze w imagejpeg podajesz dodatkowo nazwe pliku...
Ahelor
Posty: 14
Rejestracja: ndz lip 10, 2005 10:53 am
Lokalizacja: Jaworzno
Kontakt:

Re: [PHP] Zmiana rozmiaru obrazka na serwerze

Post autor: Ahelor »

No proszę, jedna mała rzecz której szukałem w manualu a cieszy. Poprostu nie wiedziałem że

Kod: Zaznacz cały

imagejpeg ($zoom,$nazwa_nowego_pliku);
Tak działa i że można w nim podawać 2 atrybut który spowoduje zapisanie pliku. Tylko teraz malutka poprawka ze tam zamiast $zoom powinno być $dest.

Zabieram się za przerobienie tego na klasę działąjącą z jpg / png / gif. Jak by ktoś potewem chciał efekt końcowy to piszcie.
paszczak
Nowy
Nowy
Posty: 123
Rejestracja: ndz paź 03, 2004 2:21 pm
Lokalizacja: Sopot
Kontakt:

Re: [PHP] Zmiana rozmiaru obrazka na serwerze

Post autor: paszczak »

polecam rowniez imageinterlace.

btw. imagejpeg moze miec jeszcze trzeci parametr odpowiadajacy za jakosc/kompresje...
ODPOWIEDZ