Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] miniatura obrazka
Forum PHP.pl > Forum > Przedszkole
Leopard
Witam,
mam kod, który pobiera obraz wskazany przez użytkownika (w formularzu za pomocą przycisku "przeglądaj" - "image_filename") i wyświetla jego miniaturę (100x100).

  1. <?php
  2. $FileTempName = $_FILES['image_filename']['name']; //pobranie pliku z formularza i nadanie nazwy tymczasowej (automatycznie)
  3. $ImgDir = 'c:/wamp/www/images/'; //okreslenie miejsca docelowego
  4. $FileName = $ImgDir . $FileTempName; //okreslenie pelnej sciezki dostepu
  5. move_uploaded_file($_FILES['image_filename']['tmp_name'], $FileName); //zapisanie uplodowanego pliku na serwerze
  6.  
  7. list ($width, $height) = getimagesize($FileName); //pobranie danych na temat wgranego obrazu
  8. $MiniImg = imagecreatetruecolor(100,100); // utworzenie pustego obrazu GD
  9. $NormalImg = imagecreatefromjpeg($FileName); // utworzenie z pliku jpg obrazu gotowego do skopiowania w przygotowane wyzej miejsce
  10. imagecopyresampled($MiniImg, $NormalImg, 0, 0, 0, 0, 100, 100, $width, $height); // kopiowanie obrazu w puste miejsce wraz ze zmiana rozdzielczosci
  11.  
  12. $MiniImgName = 'mini_' . $FileTempName; //dodanie przedrostka "mini_" do nazwy uplodowanego pliku
  13. $MiniImgSource = $ImgDir . $MiniImgName; //okreslenie pelnej sciezki dostepu do miniatury
  14.  
  15. imagejpeg($MiniImg, $MiniImgSource); //zapisanie stworzonego obrazka na serwerze
  16. ?>
  17.  
  18. <img src="images/<?php echo $MiniImgName; ?>">


Skrypt najpierw musi zapisać oryginalny obraz żeby wykonać getimagesize(), imagecreatefromjpeg() i imagecopyresampled(). Czy da się to zrobić w taki sposób aby na serwerze została zapisywana tylko miniatura, bez wcześniejszego uplodowania dużego obrazu?
Jak możecie to zerknijcie jeszcze na wpisane przeze mnie komentarze bo nie jestem pewny czy dobrze zrozumiałem co poszczególne funkcje robią.
Dzięki.
Leo
megawebmaster
Jak inaczej chcesz zrobić miniaturę, jak nie będziesz miał "dużego obrazu"? Przecież jako parametr do getimagesize() możesz podać $_FILES['image_filename']['tmp_name']. I już nie masz zapisywanego. Tylko ostatecznie musisz zapisać miniaturę i koniec.
Leopard
Dzięki, wcześniej próbowałem wstawiać $_FILES['image_filename']['name'] i nie szło, teraz widzę różnicę guitar.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.