Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zmniejszanie Zdjęcia
Forum PHP.pl > Forum > Przedszkole
dareksbs
Witam,

Dzisiaj postanowiłem dopisać funkcje zmniejszania obrazka do funkcji znaków wodnych ponieważ na każdym nowym obrazku, które posiadało inny rozmiar znak wodny był innego rozmiaru, tak więc postanowiłem że najlepiej będzie gdy zdjęcia wrzucane na serwer będą zmniejszane do 800x600, poczytałem poczytałem i znalazłem funkcje imagecopyresized z tego co wyczytałem w parametrach tej funkcji pierwszy parametr oznacza nowy obrazek, drugi obrazek, który ma zostać zmniejszony a kolejne to rozmiar nowego obrazka, tak więc dopisałem ją i wygląda to mniejwięcej tak :

  1. $wmark = imagecreatefrompng('logo.png');
  2. $im = imagecreatefromjpeg('img/bigfoto.jpg');
  3. $newwidth = "800";
  4. $newheight = "600";
  5. imagecopyresized($imsmall, $im, 0, 0, 0, 0, $newwidth, $newheight);
  6. $marge_right = 10;
  7. $marge_bottom = 10;
  8. $sx = imagesx($wmark);
  9. $sy = imagesy($wmark);
  10. imagecopy($imsmall, $wmark, imagesx($imsmall) - $sx - $marge_right, imagesy($imsmall) - $sy - $marge_bottom, 0, 0, imagesx($wmark), imagesy($wmark));
  11. imagejpeg($imsmall, $loca);
  12. imagedestroy($imsmall);


Jednakże nie działa ona poprawnie bo wyrzuca błędy, czy coś ominąłem questionmark.gif coś jeszcze potrzebuje funkcja imagecopyresized questionmark.gif

Pozdrawiam
taktak
moze napisz jakie bledy wyrzuca? nie widze nigdzie zadeklarowanej zmiennej $loca, sprawdz tez sciezki do plikow czy sa poprawne.

Przed skalowaniem obrazka sprawdzaj czy nie jest on mniejszy od 800x600 bo jesli ktos wrzuci obrazek 240x320 to wyjdzie niezla kiszka

  1. list($width,$height)=getimagesize($filePath);
dareksbs
Obrazek wysyłany jest duży większy od 800x600 co do zmiennej $loca jest wyżej ponad tym skryptem, co do błędów które wyrzuca to jest ich kilka :

  1. Warning: getimagesize() expects parameter 1 to be string, resource given in /var/www/send.php on line 92 Notice: Undefined variable: imsmall in /var/www/send.php line 93 Warning: imagecopyresized() expects parameter 1 to be resource, null given in /var/www/send.php on line 93 Notice: Undefined variable: imsmall in /var/www/send.php on line 98 Notice: Undefined variable: imsmall in /var/www/send.php on line 98 Warning: imagesx() expects parameter 1 to be resource, null given in /var/www/send.php on line 98 Notice: Undefined variable: imsmall in /var/www/send.php on line 98 Warning: imagesy() expects parameter 1 to be resource, null given in /var/www/send.php on line 98 Warning: imagecopy() expects parameter 1 to be resource, null given in /var/www/send.php on line 98 Notice: Undefined variable: imsmall in /var/www/send.php on line 99 Warning: imagejpeg() expects parameter 1 to be resource, null given in /var/www/send.php on line 99 Notice: Undefined variable: imsmall in /var/www/send.php on line 100 Warning: imagedestroy() expects parameter 1 to be resource, null given in /var/www/send.php on line 100


I żeby było bardziej zrozumiale dodam jeszcze linki kodu :

92 :
  1. list($width,$height)=getimagesize($im);


93 :
  1. imagecopyresized($imsmall, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);


98 :
  1. imagecopy($imsmall, $wmark, imagesx($imsmall) - $sx - $marge_right, imagesy($imsmall) - $sy - $marge_bottom, 0, 0, imagesx($wmark), imagesy($wmark));


99 :
  1. imagejpeg($imsmall, $loca);


100 :
  1. imagedestroy($imsmall);
Balonowy
A sama funkcja bez zmniejszania zdjęcia działa questionmark.gif
dareksbs
Tak, ogólnie cały skrypt działał, lecz po dodaniu dwóch linii kodu (tego który ma zmniejszać zdjęcie) zaczął się sypać i nie wiem teraz jak to zrobić i co źle zrobiłem.
b4rt3kk
A czego dokładnie Ty nie rozumiesz? Masz podane jak na tacy, wszystkie błędy wyszczególnione:

Warning: getimagesize() expects parameter 1 to be string, resource given in /var/www/send.php on line 92
  1. list($width,$height)=getimagesize('img/bigfoto.jpg');


Notice: Undefined variable: imsmall in /var/www/send.php line 93
Warning: imagecopyresized() expects parameter 1 to be resource, null given in /var/www/send.php on line 93
Notice: Undefined variable: imsmall in /var/www/send.php on line 98
Notice: Undefined variable: imsmall in /var/www/send.php on line 98

Tu z kolei na odwrót, zmienna $imsmall musi zwracać obiekt (uchwyt) do obrazka w którym chcesz umieścić miniaturkę. Natomiast w Twoim przypadku jest to pusta zmienna.

Dalej tak samo, doczytaj sobie komunikaty błędów i pozmieniaj żeby było dobrze. Nie wiem też czy ścieżka do $wmark jest dobra, którą podajesz jako parametr funkcji, ponieważ nie zwraca obiektu.
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.