Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak przeskalować / zmniejszyć obrazek w trakcie wysłania na serwer
Forum PHP.pl > Forum > Przedszkole
Tomekstw
na razie mam coś takiego
  1.  
  2. <?php
  3. if(isset($_POST['upload']))
  4. {
  5. $filename = $_FILES['plik']['tmp_name'];
  6. $plik_nazwa = $_FILES['plik']['name'];
  7. $plik_rozmiar = $_FILES['plik']['size'];
  8.  
  9.  
  10.  
  11. list($width, $height) = getimagesize($filename);
  12.  
  13. $thumb = imagecreatetruecolor(120, 80);
  14. $source = imagecreatefromjpeg($filename);
  15.  
  16. imagecopyresized($thumb, $source, 0, 0, 0, 0, 120, 80, $width, $height);
  17.  
  18. if(is_uploaded_file($filename)) {
  19. move_uploaded_file($filename, "upload/$plik_nazwa");
  20. echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
  21. <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer! $width x $height";
  22. }
  23. }
  24. ?>


Ale jak się domyślacie to nie działa bo jakby działało to bym nie dawał ? logiczne
Chcę aby plik został wysłany na serwer ale ... plik zostaje wysłany ale nie zostaje pomniejszony


No więc czekam na pomoc smile.gif
jarmiar
skorzystaj z tej klasy
http://www.verot.net/php_class_upload.htm
wystarczyło wejść w google, logiczne nie?
CuteOne
ale kombinujesz... skoro plik jest już na serwerze to wystarczy go "ruszyć" do zadanego folderu a dopiero potem przeskalować...
Tomekstw
CutOne , sory że tak pózno odpisuje to znaczy bardzo pózno bo aż 4 dni ale miałem małą awarie internetu.

Mógłbyś wyjaśnić bardziej szczegółowo ?
CuteOne
manual:: move_uploaded_file
Tomekstw
Myślisz że nie czytałem ?.

Wgrać na serwer obrazek do folderu i tam go dopiero zeskalować i nadpisać ? jeżeli nie to chyba masakra snitch.gif

a jeżeli tak to jak to zrobić
CuteOne
Tak jak piszesz wgrać, przeskalować i nadpisać/stworzyć nowy plik... Dlaczego masakra.. ?
Tomekstw
Czyli nadal nie wiem jak to zrobić snitch.gif
CuteOne
1. wrzucasz plik przez formularz
2. zapisujesz w wybranym folderze
3. skalujesz plik z tego folderu i zapisujesz/nadpisujesz

....
Tomekstw
Cytat(CuteOne @ 24.09.2011, 20:15:42 )
3. skalujesz plik z tego folderu i zapisujesz/nadpisujesz


Jakbym wiedział jak zrobić ten punkt to bym zrobił wiem jak wyświetlić przeskalowany obraz ale nie wiem jak go zapisać ... !
Mefiuu
imagepng

np taką funkcją zapisujesz przeskalowany obrazek.
Tomekstw
mógłbyś dać przykład ?
Mefiuu
  1. <?php
  2. // Create a blank image and add some text
  3. $im = imagecreatetruecolor(120, 20);
  4. $text_color = imagecolorallocate($im, 233, 14, 91);
  5. imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
  6.  
  7. // Save the image as 'simpletext.jpg'
  8. imagejpeg($im, 'simpletext.jpg');
  9.  
  10. // Free up memory
  11. imagedestroy($im);
  12. ?>
  13.  



żywcem z manuala ... po prostu dla utworzonego przeskalowanego obrazka wykonujesz funkcję imagejpg z parametrem $filename. Pod taką nazwą zapisze Ci plik jpg. Sprawdź manual.
Tomekstw
Tak faktycznie.

Dobra masz +.
yebieoll
też coś znalazłem:

  1. function resize($nazwa_pliku, $wysokosc, $szerokosc, $czy_zachowac_skale)
  2. {
  3. $ic = imagecreatefrompng($nazwa_pliku);
  4. if ( $ic === false )
  5. {
  6. return 'Miniaturka nie stworzona!';
  7. }
  8. $is = getimagesize($nazwa_pliku); // [0] - szerokość, [1] - wysokość
  9. //-----------------------------
  10. switch ( $czy_zachowac_skale )
  11. {
  12. case false: // zmniejszanie bezpośrednio do szerokosc/wysokosc
  13. $nts = imagecreatetruecolor($wysokosc, $szerokosc);
  14. imagecopyresized($nts, $ic, 0, 0, 0, 0, $szerokosc, $wysokosc, $is[0], $is[1]);
  15. break;
  16. default: // zmniejszanie z zachowaniem skali, aż do osiągnięcia co najmniej szerokosc/wysokosc
  17. $width = $is[0];
  18. $height = $is[1];
  19. $ratio = $is[0] / $szerokosc;
  20. if ( $ratio > 1 )
  21. {
  22. $width = $szerokosc;
  23. $height = intval($is[1] / $ratio);
  24. }
  25. $ratio = $height / $wysokosc;
  26. if ( $ratio > 1 )
  27. {
  28. $width = intval($width / $ratio);
  29. $height = $wysokosc;
  30. }
  31. $nts = imagecreatetruecolor($width, $height); // utworzenie obrazka o podanych rozmiarach z czarnym tłem
  32. imagecopyresized($nts, $ic, 0, 0, 0, 0, $width, $height, $is[0], $is[1]); break;
  33. }
  34. //-----------------------------
  35. imagepng($nts, 'nowy.png');
  36. imagedestroy($nts);
  37. }
  38.  
  39. resize('example.png', 180, 160, false);
  40. //albo
  41. resize('example.png', 180, 160, true);


dodatkowo masz możliwość pomniejszania proporcjonalnego lub bezpośrednio do ustalonych wartości.
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.