Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]tworzenie miniaturek
Forum PHP.pl > Forum > Przedszkole
gosienkami
witam szukam wyjasnionego skryptu dodawania zdjec do galerii z tworzeniem miniaturek wpisując w do pola dowolną wysokosc i szerokosc
isso
http://www.tomaszozga.pl/2008_10_03_zmiana...-na-serwer.html

może nie jest to idealnie to o co pytasz... ale chyba dość łatwo to przerobić smile.gif polecam
gosienkami
chce zrobić tak zeby po dołączeniu pliku w katalogu umiescić oryginalne zdjecie i jego miniaturke oraz zapisać sciezke do bazy. oryginalne zdjecie zapisuje natomiast nie wiem jak to zrobić z miniaturkami. Znalazłam funkcję na zmianę rozmiaru ale teraz nie wiem jak to wszystko połaczyc.

plik 1
ładuje zdjęcie
<input name="zdj" type="file" class="style" id="name" size="32" />

plik2

  1. <form id="form1" name="form1" method="post" action="">
  2.  <p class="style >
  3.  <?
  4.  $zdj=$_POST['zdj'];
  5.  $szerokosc=$_POST[''];
  6.  $wysokosc=$_POST[''];
  7.  
  8.  $docelowa_szerokosc=100;
  9.  $docelowa_wysokosc=100;
  10.  function zmiana_rozmiaru($zdj,$docelowa_szerokosc,$docelowa_wysokosc){
  11.  
  12.    // Pobranie orginalnych parametrów i kalkulacja skali
  13.    list($szerokosc, $wysokosc) = getimagesize($zdj);
  14.    $xskala=$szerokosc/$docelowa_szerokosc;
  15.    $yskala=$wysokosc/$docelowa_wysokosc;
  16.   echo $szerokosc; echo $wysokosc;
  17.    // Kalkulacja nowego rozmiaru
  18.    if ($yskala>$xskala){
  19.        $nowa_szerokosc = round($szerokosc * (1/$yskala));
  20.        $nowa_wysokosc = round($wysokosc * (1/$yskala));
  21.    }
  22.    else {
  23.        $nowa_szerokosc = round($szerokosc * (1/$xskala));
  24.        $nowa_wysokosc = round($wysokosc * (1/$xskala));
  25.    }
  26.  
  27.    // Zmiana rozmiaru orginalnego obrazu
  28.    $obraz_zmiana_wielkosci = imagecreatetruecolor($nowa_szerokosc, $nowa_wysokosc);
  29.    $obrazek_tymczasowy     = imagecreatefromjpeg ($zdj);
  30.    imagecopyresampled($obraz_zmiana_wielkosci, $obrazek_tymczasowy, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc);
  31.  
  32.    return $obraz_zmiana_wielkosci;
  33. }
  34.  
  35.  ?>
  36.    <?
  37. require("polaczenie.php");
  38. connection();
  39.  
  40. $f = $_FILES['zdj'];
  41. $spr= '../newsleter/galery/'.$data;
  42. if (is_dir($spr))
  43. {
  44. $zdj=$_POST['zdj'];
  45. $spr='c:/usr/apache/httpd/html/newsleter/galery/'; //ścieżka (tam gdzie mają znajdować się zdjęcia)
  46. } else {
  47. }
  48.    if(isset($f['name']))
  49.    {
  50.        move_uploaded_file($f['tmp_name'], '../newsleter/galery/'.$f['name']);
  51.    }
  52.                
  53.    if (!empty($f))
  54. {
  55. $zdj=$f['name'];
  56. $zdj="../galery/".$zdj;
  57. //miniaturki
  58. $min=f['name'];
  59. $min="../galery/.$zdj";
  60.  
  61.    
  62.    $sql1 = mysql_query("INSERT INTO id SET
  63.    fotka1='$zdj',
  64.    miniaturka='$min'"); //dodaje nazwę pliku do bazy danych
  65.    
  66.     echo 'Dodano  fotke'.$zdj;
  67. }
  68.     ?>


czy ktoś mogby zerknoć co jest nie tak
Thorang Hoog
Wprawdzie nie wiem jakie zrobiłeś błędy powyżej oprócz kilku literówek ;P ale tu masz skrypt który napisałem
  1. <form accept="image/jpeg, image/gif, image/png" accept-charset="iso-8859-2" action="?" enctype="multipart/form-data" method="POST" target="_self">
  2. wysokość: <input type="text" name="wysokosc" value="100" maxlength="4"><br>
  3. szerokość: <input type="text" name="szerokosc" value="100" maxlength="4"><br>
  4. <input type="file" name="zdjecie"><br>
  5. <input type="submit">
  6. </form>
  7. <?PHP
  8.   if(is_uploaded_file($_FILES['zdjecie']['tmp_name']))
  9.   { // plik został przesłany na serwer
  10.      // zmienne wykorzystane w skrypcie
  11.      $ext = false; // przechowuje rozszeżenie jeśli wartość = false plik ma zły format
  12.  
  13.  
  14.      // sprawdzanie przeslanych danych
  15.      $wysokosc = sprintf('%d', $_POST['wysokosc']); // zamiana na liczbe dziesiętną
  16.      $szerokosc = sprintf('%d', $_POST['szerokosc']);
  17.      // sprawdzenie typu przesłanego zdjęcia
  18.      if(eregi('(jpg|jpeg|JPG|JPEG)', $_FILES['zdjecie']['type'])) $ext = "jpg";
  19.      if(eregi('(gif|GIF)', $_FILES['zdjecie']['type'])) $ext = "gif";
  20.      if(eregi('(png|PNG)', $_FILES['zdjecie']['type'])) $ext = "png";
  21.      if($ext && $wysokosc && $szerokosc)
  22.      {// przeslane dane są prawidłowe skrypt jednak nie sprawdza rozmiaru pliku
  23.         do // wygenerowanie nowej nazwy pliku
  24.         {  // wraz z liczbą losową (od 0 do 9999) w celu zapobiegnięcia powtórzeń
  25.            $nazwa_zdjecia = ereg_replace(".(.){3,4}$", "_".rand(0,9999).".".$ext, $_FILES['zdjecie']['name']);
  26.         }while(file_exists("galeria/".$nazwa_zdjecia)); // dopuki nazwa nie będzie orginalna
  27.         // skopiowanie i
  28.         // zmiana wymiarów zdjęcia
  29.         // zmienia rozmiar na wpisane w formularzu
  30.         $img = zmien_rozmiar($_FILES['zdjecie']['tmp_name'], $wysokosc, $szerokosc, $ext);
  31.         // podgląd obrazka max 100x100
  32.         $small = zmien_rozmiar($_FILES['zdjecie']['tmp_name'], 100, 100, $ext);
  33.         if($img && $small)
  34.         {
  35.            switch ($ext)
  36.            {
  37.               case 'jpg':
  38.                  ImageJPEG($img, "galeria/".$nazwa_zdjecia);
  39.                  ImageJPEG($small, "galeria/small_".$nazwa_zdjecia);
  40.                  break;
  41.               case 'png':
  42.                  ImagePNG($img, "galeria/".$nazwa_zdjecia);
  43.                  ImagePNG($small, "galeria/small_".$nazwa_zdjecia);
  44.                  break;
  45.               case 'gif':
  46.                  ImageGIF($img, "galeria/".$nazwa_zdjecia);
  47.                  ImageGIF($small, "galeria/small_".$nazwa_zdjecia);
  48.                  break;
  49.            }
  50.            require("polaczenie.php");
  51.            connection();
  52.            //dodaje nazwę pliku do bazy danych
  53.            // według mnie wystarczy zapisać tylko $nazwa_zdjecia i dodawać 'galeria/' i 'galeria/small_'
  54.            $sql1 = mysql_query("INSERT INTO id SET fotka1='galeria/".$nazwa_zdjecia."', miniaturka='galeria/small_".$nazwa_zdjecia."'");
  55.         }
  56.      }
  57.      else
  58.      {  // przesłane dane są nieprawidłowe
  59.         echo "Przesłane dane są nieprawidłowe.<br>";
  60.         if(!$ext) echo "Plik ma niewłaściwy format.<br>";
  61.         if(!$wysokosc) echo "Wysokość ma niewłaściwy format.<br>";
  62.         if(!$szerokosc) echo "Szerokość ma niewłaściwy format";
  63.      }
  64.   }
  65.   /*
  66.     * funkcja zmienia rozmiar pliku zapisanego na dysku
  67.     * do podanej wysokosci i szerokosci z zachowaniem proporcji
  68.     * wymaga też podania typu pliku (jpg, gif, png)
  69.     * zwraca nowy obraz
  70.     */
  71.   function zmien_rozmiar($zdjecie, $wysokosc, $szerokosc, $ext)
  72.   {
  73.      if($ext == 'jpg')
  74.      {
  75.         if (imagetypes() & IMG_JPG)
  76.         {
  77.            $img = ImageCreateFromJPEG($zdjecie);
  78.         }
  79.         else return false; // brak obsługi plików jpg
  80.      }
  81.      else if($ext == 'gif')
  82.      {
  83.         if (imagetypes() & IMG_GIF)
  84.         {
  85.            $img = ImageCreateFromGIF($zdjecie);
  86.         }
  87.         else return false; // brak obsługi plików gif
  88.      }
  89.      else if($ext == 'png')
  90.      {
  91.         if (imagetypes() & IMG_PNG)
  92.         {
  93.            $img = ImageCreateFromPNG($zdjecie);
  94.         }
  95.         else return false; // brak obsługi plików png
  96.      }
  97.      else
  98.      {
  99.         echo "Zarządano zmiany rozmiaru pliku nieznanego formatu.<BR>";
  100.         return false;
  101.      }
  102.      list($or_szerokosc, $or_wysokosc) = getimagesize($zdjecie);
  103.      // pobranie proporcji zdjęcia
  104.      if($or_szerokosc>$or_wysokosc) // zdjecie szerokie
  105.      {  // szerokość nowego obrazka bez zmian tak jak podano na wejsciu funkcji
  106.         // wyliczanie nowej wysokości z uwzględnieniem proporcji
  107.         $wysokosc = round(($or_wysokosc / $or_szerokosc) * $wysokosc);
  108.      }
  109.      else
  110.      {  // zdjęcie wysokie
  111.         $szerokosc = round(($or_szerokosc / $or_wysokosc) * $szerokosc);
  112.      }
  113.      // tworzy nowy obraz o szerokości i wysokości wyliczonej na początku funkcji
  114.      $new_img = ImageCreateTrueColor($szerokosc, $wysokosc);
  115.      // zmiana rozmiaru
  116.      ImageCopyResampled($new_img, $img, 0,0,0,0, $szerokosc, $wysokosc, $or_szerokosc, $or_wysokosc);
  117.      return $new_img;
  118.   }
  119. ?>
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.