Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: imagecopyresampled() jak zapisać miniature na serwerze
Forum PHP.pl > Forum > PHP
kemot
Znalazłem na jakiejś stronie skrypt do tworzenia miniatur. Wyglada on tak:

  1. <?php
  2. //Przypisujemy do zmiennej $img_path ścieżke do obrazka
  3. $img_path = 'dysk:ścieżkadoobrazka.jpg';
  4. //Tworzymy scieżkę do miniaturki
  5. //Do wyświetlenia: zamiana $thumb_path = substr($img_path,0,strrpos($img_path,'.')).'.th.jpg'; na $thumb_path = '';
  6. $thumb_path = substr($img_path,0,strrpos($img_path,'.')).'.th.jpg';
  7. //ustalamy maksymalny dopuszczalny rozmiar miniatury
  8. $max_width=$max_height=100;
  9.   
  10. //Sprawdzamy czy obraz istnieje
  11. if(!file_exists($img_path))die('<p>Plik obrazu nie istnieje</p>');
  12.     
  13. //Pobieramy informacjie o obrazie
  14. $img_attr = getimagesize($img_path);
  15.   
  16. //Sprawdzamy czy obraz jest wiekszy na szerokość czy na wysokość 
  17. // i zmniejszamy odpowiednio rozmiar
  18. // $img_attr[0] - szerokosc, $img_attr[1] - wysokość
  19. if($img_attr[0]>$img_attr[1]){
  20.   $scale = $img_attr[0] / $max_width;
  21. } else {
  22.   $scale = $img_attr[1] / $max_height;
  23. }   
  24.   
  25. //Tworzymy obraz miniaturki
  26. $w = floor($img_attr[0]/$scale);
  27. $h = floor($img_attr[1]/$scale);
  28. $thumb = imagecreatetruecolor($w,$h);
  29. $image = imagecreatefromjpeg($img_path);
  30.  
  31. //Kopiujemy obraz pomniejszajac go,
  32. imagecopyresampled($thumb, $image, 0, 0, 0, 0, $w, $h, $img_attr[0], $img_attr[1]);
  33.   
  34. //Zapisujemy do pliku (jakość 85)
  35. //Do wyświetlenia: dodanie przed linie imagejpeg($thumb,$thumb_path,85); linijki header('Content-type: image/jpeg');
  36. imagejpeg($thumb,$thumb_path,85);
  37. ?>



Za pomoca tego kodu mogę wyświetlić miniature lub zapisać ją, i tu właśnie mam problem, na dysku tam skąd pobrano obrazek źródłowy. Moje pytanie jak w temacie. Co zrobić by miniatura zapisywała się na serwerze? Dodam jeszcze, że nie znam się za bardzo na obiektowym php i wole korzystać z prostych rozwiązań więc proszę nie polecać mi class.upload.php. Z góry dzięki za odpowiedź.
likemandrake
Aby zapisac plik na dysku nalezy uzyc funkcji z serii image*(), np. imagepng() do zapisu obrazka w postaci pliku png.
kemot
No i mam ten kawałek kodu. Jest imagejpeg tylko ścieżka do zapisu była brana z tej do wczytywania dlatego na dysku sie zapisywało. Zmieniłem
  1. <?php $thumb_path = substr($img_path,0,strrpos($img_path,'.')).'.th.jpg'; ?>
na
  1. <?php $thumb_path = $_SERVER['DOCUMENT_ROOT'].'miniatura.jpg'; ?>


Jakoś sobie dałem rade ale i tak dzięki smile.gif
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.