Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Upload zdjęć problem ze zmianą rozmiaru
Forum PHP.pl > Forum > Przedszkole
DonJeday
Witam,



Co robię źle, że rozmiar zdjęcia się nie zmniejsza? Chcę je już wysłać zmniejszone na serwer.

  1. <?php
  2.  
  3. $uploaddir = "zdjecia/";
  4. $namefoto = ''.$user_info[1].'.jpg';
  5. $uploadfile = $uploaddir . $namefoto;
  6.  
  7. list($width, $height) = getimagesize($foto);
  8. $new_width = 188;
  9. $new_height = 250;
  10.  
  11. $image_p = imagecreatetruecolor($new_width, $new_height);
  12. $image = imagecreatefromjpeg($foto);
  13. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  14.  
  15. imagejpeg($image_p, null, 100);
  16.  
  17. if(move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile)) {
  18.  $smarty->assign('title_color','green');
  19.  $smarty->assign('message_title','Gratulacje!');
  20.  $smarty->assign('message_text','Zdjęcie zostało zaktualizowane.');
  21.  $smarty->assign('message_back','/konto/ucp/profil.html');
  22. } else {
  23.  $smarty->assign('title_color','red');
  24.  $smarty->assign('message_title','Błąd!');
  25.  $smarty->assign('message_text','Zdjęcie nie zostało zaktualizowane.');
  26.  $smarty->assign('message_back','/konto/ucp/profil.html');
  27. }
  28. ?>
Kildyt
Ja korzystam z takiego kodu do zmiany rozmiaru:
  1. <?php
  2. $newfile = ''; // ścieżka do zapisania miniaturki
  3. $img = imagecreatefromjpeg($image);
  4. $width  = imagesx($img);
  5. $height = imagesy($img);
  6. $width_mini = "200";
  7. $height_mini = "150";
  8. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  9. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width  , $height);
  10. imagejpeg($img_mini, $newfile, 80);
  11. imagedestroy($img);
  12. imagedestroy($img_mini);
  13. ?>
DonJeday
Dzięki pomogło!
wwojteko
Witam!
Mam problem z kodem jak w przykładzie powyżej. Nie działa mi to. Ko wygląda tak:
  1. <?php
  2. $newfile = ''; // ścieżka do zapisania miniaturki
  3. $image='sample.jpg';
  4. $img = imagecreatefromjpeg($image);
  5. $width  = imagesx($img);
  6. $height = imagesy($img);
  7. $width_mini = "200";
  8. $height_mini = "150";
  9. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  10. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width  , $height);
  11. imagejpeg($img_mini, $newfile, 80);
  12. imagedestroy($img);
  13. imagedestroy($img_mini);
  14. echo'<img src="'.$newfile.'" /><br />';
  15. echo'<img src="'.$image.'" />';
  16. ?>

I problem polega na tym, że po odpaleniu skryptu wyświetla mi się taka treść:

" ˙Ř˙ŕJFIF˙ţ;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 80 ˙ŰC   %# , #&')*)-0-(0%()(˙ŰC   (((((((((((((((((((((((((((((((((((((((((((((((((((˙Ŕúź"˙Ä ˙Äľ}!1AQa"q2'Ą#BąÁRŃđ$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š'""•–—˜™š˘Ł¤ĽŚ§¨ŠŞ˛ł´ľśˇ¸šşÂĂÄĹĆÇČÉĘŇÓÔŐÖ×ŘŮÚáâăäĺćçčéęńňóôőö÷řůú˙Ä
 ˙Äľw!1AQaq"2B'ĄąÁ #3RđbrŃ $4á%ń&'()....."

Trochę go więcej ale nie wklejałem całego, ogólnie nie tworzy mi miniaturki i nie zapisuje jej na serwerze. Mam prawa dostępu do katalogu na 777 i wykonywania skryptu tez. Serwer mam na az.pl i w info php jest obsługa GD. Więc w czym może być problem?



Wiem, że zmienna $newfile to ma być ścieżka do folderu gdzie mają być tworzone miniaturki ale jak tam stawie np $newfile='/mini/' to mi wywala błąd:
Warning: imagejpeg() [function.imagejpeg]: Unable to open '/mini/' for writing: Is a directory in /home/aa16027/domains/jakontrans.pl/public_html/test/mini.php on line 21

Mam katalog mini ustawiony na 777 więc wszelkie prawa i nie wiem dlaczego tak się dzieje. Ten błąd jest w linijce:

imagejpeg($img_mini, $newfile, 80);

I teraz dlaczego tak jest ? Dlaczego jest komunikat, że nie można otworzyć katalogu mini do zapisu ? Dlatego przedtem próbowałem do katalogu głównego i też nie działa. Ma ktoś jakiś pomysł?
ucho
Nie dziw się php - jakbyś wymagał podania nazwy _pliku_ a ktoś dawał ci nazwę katalogu to też być wyrzucał ostrzeżenia smile.gif
Pewnie portrzebujesz coś w stylu " $newfile.$image" zamiast "$image"
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.