Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skalowanie i zapis obrazków
Forum PHP.pl > Forum > PHP
5w155
Witam!
Chciałbym z poniżeszego formularza:
  1. <form action="" method="post" enctype="multipart/form-data">
  2. <input type="text" name="login" />
  3. <input type="file" name="plik" />
  4. <input type="submit" value="Zapisz" />
  5. </form>

Uploadowany obrazek dostaje nową nazwę i lokalizację ze skryptu:
  1. $zapytanie = 'SELECT MAX(id_opisu) FROM opis_towaru';
  2. $wyniki = $baza->select($zapytanie);
  3. $id_p_1 = $wyniki[0]['MAX(id_opisu)']+1;
  4.  
  5. if (isset($_FILES['Plik']))
  6. {
  7. $okladka = explode('.',$_FILES['Plik']['name']);
  8.  
  9. if (!move_uploaded_file($_FILES['Plik']['tmp_name'], '../okladki/'.$id_p_1.'.'.$okladka[1]))
  10. switch($_FILES['Plik']['error'])
  11. {
  12. case 1:
  13. echo('Przesyłany plik jest większy niż zezwala konfiguracja serwera.');
  14. break;
  15. case 2:
  16. echo('Przesyłany plik jest większy niż zezwala formularz.');
  17. break;
  18. case 3:
  19. echo('Przesłano tylko część pliku.');
  20. break;
  21. case 4:
  22. echo('Plik nie został przesłany');
  23. break;
  24. }
  25. }

później chciałbym uzyskać dodatkowy efekt. Otóż chciałbym, żeby ten obrazek został odpowiednio zeskalowany i ten nowoutworzony plik podmienił ten stary. Skalowanie uzyskuję z tego skryptu:
  1. $nazwa_p = 'przyklad.jpg';
  2.  
  3. $szerokosc = 120;
  4. $wysokosc = 190;
  5.  
  6. header('Content-type: image/jpeg');
  7.  
  8. list($szerokosc_oryg, $wysokosc_oryg) = getimagesize($nazwa_p);
  9.  
  10. $skala_oryg = $szerokosc_oryg/$wysokosc_oryg;
  11.  
  12. if ($szerokosc/$wysokosc > $skala_oryg) {
  13. $szerokosc = $wysokosc*$skala_oryg;
  14. } else {
  15. $wysokosc = $szerokosc/$skala_oryg;
  16. }
  17.  
  18. $image_p = imagecreatetruecolor($szerokosc, $wysokosc);
  19. $image = imagecreatefromjpeg($nazwa_p);
  20. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $szerokosc, $wysokosc, $szerokosc_oryg, $wysokosc_oryg);
  21.  
  22. $obrazek = imagejpeg($image_p, null, 100);


Czyli ogólnie:
- wybieramy obrazek z formularza
- plik zostaje wrzucony do odpowiedniego katalogu
- obrazek jest skalowany
- stary obrazek jest podmieniany przez nowy- zeskalowany

jak mogę to osiągnąć?
thek
Zrób je w kolejności właściwej, a jako nazwy dla nowego pliku użyj nazwy starego pliku - automatycznie zastąpi.
krowal
  1. <?php
  2. $obrazek = imagejpeg($image_p, null, 100); // tutaj null zastąp ściężką pliku który chcesz zastąpić
  3. ?>
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.