Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> upload zdjęci i automatyczne tworzenie miniatur
xiaon
post 13.01.2009, 20:10:25
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.01.2009

Ostrzeżenie: (0%)
-----


Próbuje stworzyć upload obrazków z automatycznym tworzeniem miniatur o określonych rozmiarach lecz nie wiem jak. znalazłem upload i miniaturki lecz nie wiem jak to połączyć ze sobą sadsmiley02.gif sadsmiley02.gif sadsmiley02.gif sadsmiley02.gif
  1. <?php
  2. $uploaddir = 'galeria/';
  3. if(move_uploaded_file($_FILES['plik']['tmp_name'], $uploaddir.$_FILES['plik']['name']))
  4. {
  5. echo 'Plik został załadowany poprawnie <br><br>';
  6. echo '<img src="galeria/'.$_FILES['plik']['name'].'">';
  7. }
  8. else
  9. echo 'Błąd podczas uploadowania pliku.';
  10.  
  11.     //Przypisujemy do zmiennej $img_path sciezke do obrazka
  12.     $img_path = $_GET['galeria/'];
  13.  
  14.     //Tworzymy sciezke do miniaturki
  15.     $thumb_path = substr($img_path,0,strrpos($img_path,'.')).'.t.jpg';
  16.  
  17.     //ustalamy maksymalny dopuszczalny rozmiar miniatury
  18.     $max_width=$max_height=100;
  19.  
  20.     //Sprawdzamy czy obraz istnieje
  21.     if(!file_exists($img_path))die('<p>Plik obrazu nie istnieje</p>');
  22.    
  23.     //Pobieramy informacjie o obrazie
  24.     $img_attr = getimagesize($img_path);
  25.  
  26.     //Sprawdzamy czy obraz jest wiekszy na szerokosc czy na wysokosc
  27.     // i zmniejszamy odpowiednio rozmiar
  28.     // $img_attr[0] - szerokosc, $img_attr[1] - wysokosc
  29.     if($img_attr[0]>$img_attr[1]){
  30.         $scale = $img_attr[0] / $max_width;
  31.     }else{
  32.         $scale = $img_attr[1] / $max_height;
  33.     }    
  34.  
  35.     //Tworzymy obraz miniaturki
  36.     $w = floor($img_attr[0]/$scale);
  37.     $h = floor($img_attr[1]/$scale);
  38.     $thumb = imagecreatetruecolor($w,$h);
  39.  
  40.     //Kopiujemy obraz pomniejszajac go,
  41.     imagecopyresampled($thumb, imagecreatefromjpeg($img_path), 0, 0, 0, 0, $w, $h, $img_attr[0], $img_attr[1]);
  42.  
  43.     //Zapisujemy do pliku (jakosc 85)
  44.     imagejpeg($thumb,$thumb_path,85);
  45. ?>
Go to the top of the page
+Quote Post
ayeo
post 13.01.2009, 20:16:01
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

Ostrzeżenie: (0%)
-----


@xiaon, witaj na Forum! To Twój pierwszy post więc przymykam oko. Proszę o poprawne używanie znaczników BBcode. Tym razem poprawię za Ciebie. Jeszcze raz witam i życzę owocnego kodowania!


Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
xiaon
post 13.01.2009, 20:58:58
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.01.2009

Ostrzeżenie: (0%)
-----


Nikt nie chce mi pomóc;/;/
Go to the top of the page
+Quote Post
grubyx
post 14.01.2009, 06:57:45
Post #4





Grupa: Zarejestrowani
Postów: 34
Pomógł: 1
Dołączył: 5.10.2006

Ostrzeżenie: (0%)
-----


Witaj, ja do takiego czegoś napisałem sobie dawno temu clasę:
  1. class.upload.php:
  2. <?
  3. // mz@zwyrol.com
  4.  
  5. class Upload {
  6. private $mime = false;
  7. private $thumb_data = array();
  8. private $max_size = false;
  9. private $size;
  10. private $tmp_name;
  11. private $type;
  12. private $file;
  13. private $dir;
  14. private $name;
  15. private $file_name;
  16.  
  17.  public function __construct($data) {
  18.    foreach($data as $opt => $val)
  19.      $this->$opt = $val;
  20.  }
  21.  public function SetDir($dir) {
  22.    $char = substr($dir, -1);
  23.    
  24.    if($char != '/')
  25.      $dir .= '/';
  26.  
  27.    $this->dir = $dir;
  28.  }
  29.  public function SetName($name) {
  30.      $this->file_name = $name;
  31.  }
  32.  public function FileName() {
  33.    if(!$this->dir)
  34.      return false;
  35.  
  36.    if(!$this->file_name) {
  37.      $parts = explode('.', $this->name);
  38.      $rozszerzenie = $parts[count($parts)-1];
  39.  
  40.      $this->file_name = date('YmdHis') . rand(1, 1000) . '.' . $rozszerzenie;
  41.      
  42.      while(file_exists($this->dir . $this->file_name))
  43.        $this->file_name = date('YmdHis') . rand(1, 1000) . '.' . $rozszerzenie;
  44.  
  45.    }
  46.    return $this->dir . $this->file_name;
  47.  }
  48.  public function ThumbName($thumb) {
  49.   if(!$this->dir || !$this->file_name)
  50.      return false;
  51.  
  52.   return $this->dir . $thumb . '-' . $this->file_name;
  53.  }
  54.  public function SetMime($mime_array) {
  55.    $this->mime = $mime_array;
  56.  }
  57.  public function SetMaxSize($size) {
  58.    $this->max_size = ($size * 1024);
  59.  }
  60.  public function Valid() {
  61.    if(is_array($this->mime)) {
  62.     if(!in_array($this->type, $this->mime)) {
  63.       return -1;
  64.     }
  65.    }
  66.  
  67.    if(!empty($this->max_size) && ($this->size > $this->max_size)) {
  68.      return -2;
  69.    }
  70.  
  71.    if($this->error > 0)
  72.        return -3;
  73.  
  74.    return true;
  75.  }
  76.  public function Msg($int) {
  77.   $msg = '';
  78.  
  79.   switch($int) {
  80.    case -1:
  81.       $msg = 'Błędny typ pliku, obsługiwane: ' . $this->ValidMimes();
  82.       break;
  83.    case -2:
  84.       $msg = 'Plik jest za duży (' . (float) round(($this->size / 1024)) . 'kb), maksymalny rozmiar wynosi: ' . ($this->max_size / 1024) . 'kb';
  85.       break;
  86.    case -3:
  87.       $msg = 'Przesyłanie pliku nie powiodło się, spróbuj ponownie';
  88.       break;
  89.   }
  90.   return '<br>' . $msg;
  91.  }
  92.  public function SaveFile() {
  93.    if(@move_uploaded_file($this->tmp_name, $this->FileName()))
  94.      return $this->FileName();
  95.      
  96.    return false;
  97.  }
  98.  public function MakeThumb($array) {
  99.     if(!is_array($array)) return false;
  100.     if(!file_exists($this->FileName())) return false;
  101.    
  102.     list($width_orig, $height_orig) = getimagesize($this->FileName());
  103.    
  104.  
  105.     foreach($array as $opt => $val) {
  106.       $width = $val['width'];
  107.       $height = $val['height'];
  108.       $proporcja = $val['proporcja'];
  109.      
  110.        if($proporcja) {
  111.          $ratio_orig = $width_orig/$height_orig;
  112.  
  113.          if ($width/$height > $ratio_orig) {
  114.             $width = $height*$ratio_orig;
  115.          } else {
  116.             $height = $width/$ratio_orig;
  117.          }
  118.        }
  119.  
  120.          $image_p = imagecreatetruecolor($width, $height);
  121.          $image = imagecreatefromjpeg($this->FileName());
  122.          imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
  123.  
  124.          $thumb[$opt] = $this->ThumbName($opt);
  125.          
  126.          $img = imagejpeg($image_p, $thumb[$opt], 100);
  127.     }
  128.     return $thumb;
  129.  }
  130.  public function ValidMimes() {
  131.    if(!is_array($this->mime)) return false;
  132.  
  133.    $mime = array();
  134.    $mimes = array('image/gif' => 'gif',
  135.                   'image/png' => 'png',
  136.                   'image/x-MS-bmp' => 'bmp',
  137.                   'image/jpeg' => 'jpg',
  138.                   'image/pjpg' => 'jpg',
  139.                   'image/pjpeg' => 'jpg',
  140.                   'image/jpg' => 'jpg',
  141.                   'image/tiff' => 'tif',
  142.                   'text/html' => 'html',
  143.                   'text/plain' => 'txt',
  144.                   'application/x-gzip' => 'tgz',
  145.                   'application/x-tar' => 'tar',
  146.                   'application/zip' => 'zip',
  147.                   'application/mac-binhex40' => 'hqx',
  148.                   'application/msword' => 'doc',
  149.                   'application/pdf' => 'pdf',
  150.                   'application/postcript' => 'ps',
  151.                   'application/rtf' => 'rtf',
  152.                   'application/x-dvi' => 'dvi',
  153.                   'application/x-latex' => 'latex',
  154.                   'application/x-shockwave-flash' => 'swf',
  155.                   'application/x-tex' => 'tex',
  156.                   'audio/midi' => 'mid',
  157.                   'audio/basic' => 'au',
  158.                   'audio/mpeg' => 'mp3',
  159.                   'audio/x-pn-realaudio' => 'ram',
  160.                   'audio/x-realaudio' => 'ra',
  161.                   'audio/x-wav' => 'wav',
  162.                   'video/mpeg' => 'mpg',
  163.                   'model/vrml' => 'wrl',
  164.                   'video/quicktime' => 'mov',
  165.                   'video/x-msvideo' => 'avi'
  166.                  );
  167.  
  168.    foreach($this->mime as $m) {
  169.      if(!empty($mimes[$m])) {
  170.        $mime[] = $mimes[$m];
  171.      }
  172.    }
  173.    return join(', ', array_unique($mime));
  174.  }
  175. }
  176. ?>


Wiem, że jest lamersko napisana, ale działa w chwili gdy ja robilem uczylem sie programować snitch.gif, uruchamiamy:

  1. <?php
  2. if(!empty($_FILES['foto']['name'])) {
  3.  $up = new Upload($_FILES['foto']);
  4.  
  5.  $up->SetDir('../img/'); // Katalog do ktorego maja zapisywane byc zdjecia
  6.  // dostepne mime types dla pliku:
  7.  
  8.  $mime_types = array('image/jpeg','image/pjpg', 'image/pjpeg', 'image/jpg');
  9.  $up->SetMime($mime_types);
  10.  
  11.  if(($num = $up->Valid()) === true) {
  12.    $file = $up->SaveFile();
  13.  
  14.    if(!$file || !file_exists($file))
  15.     echo $up->Msg(-3); // jeśli nie uploadnelo pliku zwraca komunikat błędu
  16.    else {
  17.    // Tablica z ktorej czyta ila ma zrobic miniatur i ustala wyskość, szerokość - jesli proprocja jest rowna 1
  18.   //  ustawia ją, jeśli jest na 0 zrobi miniatury w takim rozmiarze jak podany:
  19.    $thumb = array('thumb1' => array('width' => 100, 'height' => 100, 'proporcja' => 1),
  20.                   'thumb2' => array('width' => 410, 'height' => 310, 'proporcja' => 1),
  21.                   );
  22.  
  23.     $array = $up->MakeThumb($thumb); // funkcja zwraca tablice z sciezkami miniatur
  24.  
  25.     $array['foto_oryginalne'] = $file;
  26.  
  27.    
  28.      var_dump($array);
  29.      
  30.    }
  31.  } else {
  32.   echo $up->Msg($num); // komuniakt błedy gdy coś się nie powiedzie
  33.  }
  34. }
  35. ?>

W razie problemów pisz, postaram się odpowiedzieć
Go to the top of the page
+Quote Post
xiaon
post 14.01.2009, 17:20:43
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.01.2009

Ostrzeżenie: (0%)
-----


to mam utworzyć nowy php o nazwie class.upload.php z kodem a gdzie mam wkleić drugi plik bo mam 2 pliki zaladuj.inc.php z kodem
  1. <script type="text/javascript">
  2. <!-- <![CDATA[
  3. function rozszerzenie(f) {
  4. nazwa = f.plik.value;
  5. nazwa = nazwa.toLowerCase();
  6. if (nazwa=="") {
  7. alert("Musisz wybrac plik do wyslania!");
  8. return false;
  9. }
  10. if (nazwa.lastIndexOf(".gif")<0 && nazwa.lastIndexOf(".jpg")<0) {
  11. alert("Mozesz wysylac tylko pliki GIF i JPG!");
  12. return false;
  13. }
  14. return true;
  15. }
  16. // ]]> -->
  17. </script>
  18. <form action="upl.php" method="post" enctype="multipart/form-data"
  19. onsubmit="return rozszerzenie(this)"><div>
  20. <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
  21. <input name="plik" type="file" />
  22. <input type="submit" value=" wyslij " />
  23. </div></form>[b]
i drugi upl.php z kodem z początku postu

Ten post edytował xiaon 14.01.2009, 17:25:01
Go to the top of the page
+Quote Post
grubyx
post 15.01.2009, 09:56:41
Post #6





Grupa: Zarejestrowani
Postów: 34
Pomógł: 1
Dołączył: 5.10.2006

Ostrzeżenie: (0%)
-----


Stwórz class.upload.php i do upl.php (tego co masz w formularzu) dopisz to co pisałem o uruchomieniu. Pozdrawiam.
Go to the top of the page
+Quote Post
BatGraf
post 15.01.2009, 17:01:18
Post #7





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 20.03.2007
Skąd: Kruklanki/Otwock

Ostrzeżenie: (0%)
-----


Przyłaczę się do prosby kolegi. Możesz to po kolei opisać ? Próbuję to zrobić, ale cos jednak jest nnie tak. Myślę, ze z tego tutoriala, który zrobisz, wiele osób skorzysta.

Z góry dzieki smile.gif


--------------------
_____________________________________________________

Pierwszy Tutorial - :)
Drugi tutorial :)
Trzeci tutorial :)

A wszystkie trzy - jak usmiechnąć się do siebie :)
Go to the top of the page
+Quote Post
pooh
post 15.01.2009, 18:49:39
Post #8





Grupa: Zarejestrowani
Postów: 20
Pomógł: 3
Dołączył: 7.01.2009

Ostrzeżenie: (0%)
-----


Ja używam czegoś takiego, może pomoże, albo naświetli temat.
Można to oczywiście spakować do klasy, ale jakoś nie ma kiedy.


  1. <?php
  2. $ret= upload_image ($_FILES['nazwa_tablicy']['tmp_name'], $_FILES['nazwa_tablicy']['name']);
  3. if ($ret)
  4.   {
  5.      //powiodlo_sie_zapisanie_zdjecia_zatem_tworzymy_miniaturke
  6.  
  7.      $ret= create_miniature ($_FILES['nazwa_tablicy']['tmp_name'], $_FILES['nazwa_tablicy']['name']);
  8.      if ($ret)
  9.         {
  10.            //powiodlo_sie_zapisanie_miniaturki
  11.         }
  12.      else
  13.         {
  14.            //zrob_cos_bo_miniaturka_nie_zostala_utworzona
  15.         }
  16. }
  17. else
  18.   {
  19.      //zrob_cos_bo_nie_powiodlo_sie_zapisanie_zdjecia
  20.    }
  21. ?>


  1. <?php
  2. function upload_image ($tmp_file_name, $dst_file_name)
  3.   {
  4.      $lret= copy ($tmp_file_name, 'katalog_gdzie_bedzie_zapisane_zdjecie'.$dst_file_name);
  5.      return ($lret);
  6.   }
  7. ?>

  1. <?php
  2. function create_miniature ($tmp_file_name, $dst_file_name)
  3.   {
  4.      $src = imagecreatefromjpeg ($tmp_file_name);
  5.      if (!$src)
  6.        {
  7.           return (0);
  8.        }
  9.      $src_width  = imagesx($src);
  10.      $src_height = imagesy($src);
  11.      $dst_width= 50; //taka szerokosc bedzie miala miniaturka
  12.      $dst_height= 50; //taka wysokosc bedzie miala miniaturka
  13.      $dst = imagecreatetruecolor($dst_width, $dst_height);
  14.  
  15.      if (!$dst)
  16.        {
  17.           return (0);
  18.        }                
  19.  
  20.      $lret= imagecopyresampled($dst, $src, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height);
  21.      if (!$lret)
  22.        {
  23.           return (0);
  24.        }                
  25.  
  26.      $lret= imagejpeg ($dst, 'katalog_do_zapisania_miniaturki'.$dst_file_name, 100); //liczba 100, to jakość
  27.      if (!$lret)
  28.         {
  29.           return (0);
  30.         }                
  31.  
  32.      imagedestroy($src);        
  33.      imagedestroy($dst);                
  34.  
  35.      return (1);
  36.   }
  37. ?>


Ten post edytował pooh 15.01.2009, 18:56:40
Go to the top of the page
+Quote Post
grubyx
post 16.01.2009, 14:27:01
Post #9





Grupa: Zarejestrowani
Postów: 34
Pomógł: 1
Dołączył: 5.10.2006

Ostrzeżenie: (0%)
-----


Ok więc robimy sobie plik class.upload.php i wrzucamy do niego:
  1. <?
  2. // mz@zwyrol.com
  3.  
  4. class Upload {
  5. private $mime = false;
  6. private $thumb_data = array();
  7. private $max_size = false;
  8. private $size;
  9. private $tmp_name;
  10. private $type;
  11. private $file;
  12. private $dir;
  13. private $name;
  14. private $file_name;
  15.  
  16.  public function __construct($data) {
  17.    foreach($data as $opt => $val)
  18.      $this->$opt = $val;
  19.  }
  20.  public function SetDir($dir) {
  21.    $char = substr($dir, -1);
  22.  
  23.    if($char != '/')
  24.      $dir .= '/';
  25.  
  26.    $this->dir = $dir;
  27.  }
  28.  public function SetName($name) {
  29.      $this->file_name = $name;
  30.  }
  31.  public function FileName() {
  32.    if(!$this->dir)
  33.      return false;
  34.  
  35.    if(!$this->file_name) {
  36.      $parts = explode('.', $this->name);
  37.      $rozszerzenie = $parts[count($parts)-1];
  38.  
  39.      $this->file_name = date('YmdHis') . rand(1, 1000) . '.' . $rozszerzenie;
  40.  
  41.      while(file_exists($this->dir . $this->file_name))
  42.        $this->file_name = date('YmdHis') . rand(1, 1000) . '.' . $rozszerzenie;
  43.  
  44.    }
  45.    return $this->dir . $this->file_name;
  46.  }
  47.  public function ThumbName($thumb) {
  48.   if(!$this->dir || !$this->file_name)
  49.      return false;
  50.  
  51.   return $this->dir . $thumb . '-' . $this->file_name;
  52.  }
  53.  public function SetMime($mime_array) {
  54.    $this->mime = $mime_array;
  55.  }
  56.  public function SetMaxSize($size) {
  57.    $this->max_size = ($size * 1024);
  58.  }
  59.  public function Valid() {
  60.    if(is_array($this->mime)) {
  61.     if(!in_array($this->type, $this->mime)) {
  62.       return -1;
  63.     }
  64.    }
  65.  
  66.    if(!empty($this->max_size) && ($this->size > $this->max_size)) {
  67.      return -2;
  68.    }
  69.  
  70.    if($this->error > 0)
  71.        return -3;
  72.  
  73.    return true;
  74.  }
  75.  public function Msg($int) {
  76.   $msg = '';
  77.  
  78.   switch($int) {
  79.    case -1:
  80.       $msg = 'Błędny typ pliku, obsługiwane: ' . $this->ValidMimes();
  81.       break;
  82.    case -2:
  83.       $msg = 'Plik jest za duży (' . (float) round(($this->size / 1024)) . 'kb), maksymalny rozmiar wynosi: ' . ($this->max_size / 1024) . 'kb';
  84.       break;
  85.    case -3:
  86.       $msg = 'Przesyłanie pliku nie powiodło się, spróbuj ponownie';
  87.       break;
  88.   }
  89.   return '<br>' . $msg;
  90.  }
  91.  public function SaveFile() {
  92.    if(@move_uploaded_file($this->tmp_name, $this->FileName()))
  93.      return $this->FileName();
  94.  
  95.    return false;
  96.  }
  97.  public function MakeThumb($array) {
  98.     if(!is_array($array)) return false;
  99.     if(!file_exists($this->FileName())) return false;
  100.  
  101.     list($width_orig, $height_orig) = getimagesize($this->FileName());
  102.  
  103.  
  104.     foreach($array as $opt => $val) {
  105.       $width = $val['width'];
  106.       $height = $val['height'];
  107.       $proporcja = $val['proporcja'];
  108.  
  109.        if($proporcja) {
  110.          $ratio_orig = $width_orig/$height_orig;
  111.  
  112.          if ($width/$height > $ratio_orig) {
  113.             $width = $height*$ratio_orig;
  114.          } else {
  115.             $height = $width/$ratio_orig;
  116.          }
  117.        }
  118.  
  119.          $image_p = imagecreatetruecolor($width, $height);
  120.          $image = imagecreatefromjpeg($this->FileName());
  121.          imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
  122.  
  123.          $thumb[$opt] = $this->ThumbName($opt);
  124.  
  125.          $img = imagejpeg($image_p, $thumb[$opt], 100);
  126.     }
  127.     return $thumb;
  128.  }
  129.  public function ValidMimes() {
  130.    if(!is_array($this->mime)) return false;
  131.  
  132.    $mime = array();
  133.    $mimes = array('image/gif' => 'gif',
  134.                   'image/png' => 'png',
  135.                   'image/x-MS-bmp' => 'bmp',
  136.                   'image/jpeg' => 'jpg',
  137.                   'image/pjpg' => 'jpg',
  138.                   'image/pjpeg' => 'jpg',
  139.                   'image/jpg' => 'jpg',
  140.                   'image/tiff' => 'tif',
  141.                   'text/html' => 'html',
  142.                   'text/plain' => 'txt',
  143.                   'application/x-gzip' => 'tgz',
  144.                   'application/x-tar' => 'tar',
  145.                   'application/zip' => 'zip',
  146.                   'application/mac-binhex40' => 'hqx',
  147.                   'application/msword' => 'doc',
  148.                   'application/pdf' => 'pdf',
  149.                   'application/postcript' => 'ps',
  150.                   'application/rtf' => 'rtf',
  151.                   'application/x-dvi' => 'dvi',
  152.                   'application/x-latex' => 'latex',
  153.                   'application/x-shockwave-flash' => 'swf',
  154.                   'application/x-tex' => 'tex',
  155.                   'audio/midi' => 'mid',
  156.                   'audio/basic' => 'au',
  157.                   'audio/mpeg' => 'mp3',
  158.                   'audio/x-pn-realaudio' => 'ram',
  159.                   'audio/x-realaudio' => 'ra',
  160.                   'audio/x-wav' => 'wav',
  161.                   'video/mpeg' => 'mpg',
  162.                   'model/vrml' => 'wrl',
  163.                   'video/quicktime' => 'mov',
  164.                   'video/x-msvideo' => 'avi'
  165.                  );
  166.  
  167.    foreach($this->mime as $m) {
  168.      if(!empty($mimes[$m])) {
  169.        $mime[] = $mimes[$m];
  170.      }
  171.    }
  172.    return join(', ', array_unique($mime));
  173.  }
  174. }
  175. ?>

Robimy plik upload.php i wrzucamy tam:
  1. <?
  2. // mz@zwyrol.com
  3.  
  4. include('class.upload.php');
  5.  
  6. if(!empty($_FILES['foto']['name'])) {
  7.  $up = new Upload($_FILES['foto']);
  8.  $up->SetDir('../img/'); // ustawia katalog do ktorego będzie mial wrzucic zdjęcia i miniatury
  9.  
  10.  $mime_types = array('image/jpeg','image/pjpg', 'image/pjpeg', 'image/jpg');
  11.  $up->SetMime($mime_types); // Metoda, która ustawia valid mime types dla plików z tablicy $mime_types
  12.  
  13.  if(($num = $up->Valid()) === true) {
  14.    $file = $up->SaveFile();
  15.  
  16.    if(!$file || !file_exists($file))
  17.     echo $up->Msg(-3); // pokazuje błąd, że plik się nie uploadnął
  18.    else {
  19.    // tablica do miniatur
  20.   // Jeśli proporcja = 1 - ustawi proporcje, jeśli = 0 ustawi rozmiar miniatury taki jak w podanych wartościach
  21.   // Moze byc dowolna ilość elementów tworzyć po prostu:
  22.  // $thumb = array('element' => array('width' => 'szerokość', 'height' => 'wysokość', 'proporcja' => 'wartośc 0 lub 1'));
  23.  // Stworzy tyle miniatur ile jest elementów w poniższym przykładzie tworzy dwie miniatury
  24.  
  25.    $thumb = array('thumb1' => array('width' => 100, 'height' => 100, 'proporcja' => 1),
  26.                   'thumb2' => array('width' => 410, 'height' => 310, 'proporcja' => 1),
  27.                   );
  28.  
  29.     $array = $up->MakeThumb($thumb);
  30.     $array['foto'] = $file;
  31.  
  32.     var_dump($array); // pokazuje zawartość tablicy $array
  33.     // Zwróci tablice asocjacyjna klucze 'foto', 'thumb1', 'thumb2' i wartości to pathe do plików  
  34.    
  35. }
  36.  } else {
  37.   echo $up->Msg($num); // pokazuje komunikat błędu jeśli validacja się nie powiedzie
  38.  }
  39. }
  40. ?>

I robimy formularz np. form.html:
  1. <form action="upload.php" method="post" enctype="multipart/form-data">
  2. <input type="file" name="foto"><br>
  3. <input type="submit" value="Dodaj zdjęcie">
  4. </form>


Wchodzimy na http://adresURL.pl/form.html i uploadujemy plik
Mam nadzieje, że pomogło i będzie działać. W razie problemów proszę pisać. Pozdrawiam.

Ten post edytował grubyx 16.01.2009, 14:38:46
Go to the top of the page
+Quote Post
xiaon
post 17.01.2009, 20:52:07
Post #10





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.01.2009

Ostrzeżenie: (0%)
-----


zrobiłem tak jak napisane wyżej i wyskoczył mi błąd
Cytat
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in c:\usr\krasnal\www\strona\galeria\class.upload.php on line 5
Go to the top of the page
+Quote Post
BatGraf
post 18.01.2009, 17:19:31
Post #11





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 20.03.2007
Skąd: Kruklanki/Otwock

Ostrzeżenie: (0%)
-----


a u mnie bardzo ładnie chodzi. Dzieki wielkie, głównie za cierpliwość. Postaram się przejrzeć po kolei ten skrypt, żeby nie zostało to na zasadzie kopiuj wklej.

Żałuję tylko, że nie moge kliknąć "Pomógł" , bo nie zakładałem tego postu, ale Twój post Pomógł smile.gif

Mam tylko jedno czy dwa pytania. Wiem w którym miejscu tworzy jedną czy dwie miniatury, jakie rozmiary ma mieć (proporcja lub szer i wys), ale podpowiedz mi, jak ustawić, żeby stosowało tylko np szer lub tylko wysokość? Chcę zrobic tak żeby wszystkie miniaturoy miały taką samą wysokość lub taka samą szerokość.

1. Jak utworzyć miniaturę tylko zmieniając jeden bok? Np szer, a wys zmniejszy się proporcjonalnie?
2. Czy mozna miniatury zapisywać w innym folderze, a duże zdjęcie w innym?
3. Czy mozna uploadując zdjęcie zmienic mu rozmiar na np 800 szer (duża fotka)

Ten post edytował BatGraf 18.01.2009, 18:49:42


--------------------
_____________________________________________________

Pierwszy Tutorial - :)
Drugi tutorial :)
Trzeci tutorial :)

A wszystkie trzy - jak usmiechnąć się do siebie :)
Go to the top of the page
+Quote Post
grubyx
post 19.01.2009, 14:04:42
Post #12





Grupa: Zarejestrowani
Postów: 34
Pomógł: 1
Dołączył: 5.10.2006

Ostrzeżenie: (0%)
-----


Cytat(xiaon @ 17.01.2009, 20:52:07 ) *
zrobiłem tak jak napisane wyżej i wyskoczył mi błąd

Wydaje mi się, że używasz php4 a napisałem to na php5.
BatGraf:
By zrobić miniatury o określonych rozmiarach użyj tablicy:
  1. <?php
  2. $thumb = array('thumb1' => array('width' => 100, 'height' => 100, 'proporcja' => 0),
  3.                        'thumb2' => array('width' => 200, 'height' => 200, 'proporcja' => 0)
  4.                       );
  5. $array = $up->MakeThumb($thumb);
  6. ?>

$array będzie zawierać tablice asocjacyjną z kluczami: thumb1, thumb2 i wartości to będą pathe do plików.

Jeśli proporcja wynosi 1 - wtedy ustawia proporcje nie przekraczając rozmiaru podanego w width i height jeśli jest = 0
Wtedy robi miniature o rozmiarach równych podanych w width i height.
Mam nadzieje, że teraz jest wszystko jasne. Pozdrawiam.
Go to the top of the page
+Quote Post
endigarnek
post 21.01.2009, 18:26:48
Post #13





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 21.01.2009

Ostrzeżenie: (0%)
-----


Witam, Mógłby ktoś przerobić skrypt tak aby można było wybrać osobne miejsce gdzie ma się dodać miniaturka i plik orginalny?

Ten post edytował endigarnek 21.01.2009, 18:27:30
Go to the top of the page
+Quote Post
grubyx
post 22.01.2009, 04:46:17
Post #14





Grupa: Zarejestrowani
Postów: 34
Pomógł: 1
Dołączył: 5.10.2006

Ostrzeżenie: (0%)
-----


Zrobiłem. Plik class.upload.php:

  1. <?
  2. class Upload {
  3. private $mime = false;
  4. private $thumb_data = array();
  5. private $max_size = false;
  6. private $size;
  7. private $tmp_name;
  8. private $type;
  9. private $file;
  10. private $dir;
  11. private $name;
  12. private $file_name;
  13. private $thumb_dir;
  14.  
  15.  
  16.  public function __construct($data) {
  17.    foreach($data as $opt => $val)
  18.      $this->$opt = $val;
  19.  }
  20.  public function SetThumbDir($dir) {
  21.   $ch = substr($dir, -1);
  22.  
  23.   if($char != '/')
  24.    $dir .= '/';
  25.  
  26.    $this->thumb_dir = $dir;
  27.  }
  28.  public function SetDir($dir) {
  29.    $char = substr($dir, -1);
  30.  
  31.    if($char != '/')
  32.      $dir .= '/';
  33.  
  34.    $this->dir = $dir;
  35.  }
  36.  public function SetName($name) {
  37.      $this->file_name = $name;
  38.  }
  39.  public function FileName() {
  40.    if(!$this->dir)
  41.      return false;
  42.  
  43.    if(!$this->file_name) {
  44.      $parts = explode('.', $this->name);
  45.      $rozszerzenie = $parts[count($parts)-1];
  46.  
  47.      $this->file_name = date('YmdHis') . rand(1, 1000) . '.' . $rozszerzenie;
  48.  
  49.      while(file_exists($this->dir . $this->file_name))
  50.        $this->file_name = date('YmdHis') . rand(1, 1000) . '.' . $rozszerzenie;
  51.  
  52.    }
  53.    return $this->dir . $this->file_name;
  54.  }
  55.  public function ThumbName($thumb) {
  56.   if(!$this->thumb_dir || !$this->file_name)
  57.      return false;
  58.  
  59.   return $this->thumb_dir . $thumb . '-' . $this->file_name;
  60.  }
  61.  public function SetMime($mime_array) {
  62.    $this->mime = $mime_array;
  63.  }
  64.  public function SetMaxSize($size) {
  65.    $this->max_size = ($size * 1024);
  66.  }
  67.  public function Valid() {
  68.    if(is_array($this->mime)) {
  69.     if(!in_array($this->type, $this->mime)) {
  70.       return -1;
  71.     }
  72.    }
  73.  
  74.    if(!empty($this->max_size) && ($this->size > $this->max_size)) {
  75.      return -2;
  76.    }
  77.  
  78.    if($this->error > 0)
  79.        return -3;
  80.  
  81.    return true;
  82.  }
  83.  public function Msg($int) {
  84.   $msg = '';
  85.  
  86.   switch($int) {
  87.    case -1:
  88.       $msg = 'Błędny typ pliku, obsługiwane: ' . $this->ValidMimes();
  89.       break;
  90.    case -2:
  91.       $msg = 'Plik jest za duży (' . (float) round(($this->size / 1024)) . 'kb), maksymalny rozmiar wynosi: ' . ($this->max_size / 1024) . 'kb';
  92.       break;
  93.    case -3:
  94.       $msg = 'Przesyłanie pliku nie powiodło się, spróbuj ponownie';
  95.       break;
  96.   }
  97.   return '<br>' . $msg;
  98.  }
  99.  public function SaveFile() {
  100.    if(@move_uploaded_file($this->tmp_name, $this->FileName()))
  101.      return $this->FileName();
  102.  
  103.    return false;
  104.  }
  105.  public function MakeThumb($array) {
  106.     if(!is_array($array)) return false;
  107.     if(!file_exists($this->FileName())) return false;
  108.  
  109.     list($width_orig, $height_orig) = getimagesize($this->FileName());
  110.  
  111.  
  112.     foreach($array as $opt => $val) {
  113.       $width = $val['width'];
  114.       $height = $val['height'];
  115.       $proporcja = $val['proporcja'];
  116.  
  117.        if($proporcja) {
  118.          $ratio_orig = $width_orig/$height_orig;
  119.  
  120.          if ($width/$height > $ratio_orig) {
  121.             $width = $height*$ratio_orig;
  122.          } else {
  123.             $height = $width/$ratio_orig;
  124.          }
  125.        }
  126.  
  127.          $image_p = imagecreatetruecolor($width, $height);
  128.          $image = imagecreatefromjpeg($this->FileName());
  129.          imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
  130.  
  131.          $thumb[$opt] = $this->ThumbName($opt);
  132.  
  133.          $img = imagejpeg($image_p, $thumb[$opt], 100);
  134.     }
  135.     return $thumb;
  136.  }
  137.  public function ValidMimes() {
  138.    if(!is_array($this->mime)) return false;
  139.  
  140.    $mime = array();
  141.    $mimes = array('image/gif' => 'gif',
  142.                   'image/png' => 'png',
  143.                   'image/x-MS-bmp' => 'bmp',
  144.                   'image/jpeg' => 'jpg',
  145.                   'image/pjpg' => 'jpg',
  146.                   'image/pjpeg' => 'jpg',
  147.                   'image/jpg' => 'jpg',
  148.                   'image/tiff' => 'tif',
  149.                   'text/html' => 'html',
  150.                   'text/plain' => 'txt',
  151.                   'application/x-gzip' => 'tgz',
  152.                   'application/x-tar' => 'tar',
  153.                   'application/zip' => 'zip',
  154.                   'application/mac-binhex40' => 'hqx',
  155.                   'application/msword' => 'doc',
  156.                   'application/pdf' => 'pdf',
  157.                   'application/postcript' => 'ps',
  158.                   'application/rtf' => 'rtf',
  159.                   'application/x-dvi' => 'dvi',
  160.                   'application/x-latex' => 'latex',
  161.                   'application/x-shockwave-flash' => 'swf',
  162.                   'application/x-tex' => 'tex',
  163.                   'audio/midi' => 'mid',
  164.                   'audio/basic' => 'au',
  165.                   'audio/mpeg' => 'mp3',
  166.                   'audio/x-pn-realaudio' => 'ram',
  167.                   'audio/x-realaudio' => 'ra',
  168.                   'audio/x-wav' => 'wav',
  169.                   'video/mpeg' => 'mpg',
  170.                   'model/vrml' => 'wrl',
  171.                   'video/quicktime' => 'mov',
  172.                   'video/x-msvideo' => 'avi'
  173.                  );
  174.  
  175.    foreach($this->mime as $m) {
  176.      if(!empty($mimes[$m])) {
  177.        $mime[] = $mimes[$m];
  178.      }
  179.    }
  180.    return join(', ', array_unique($mime));
  181.  }
  182. }
  183. ?>


upload.php:
  1. <?
  2. include('class.upload.php');
  3.  
  4. if(!empty($_FILES['foto']['name'])) {
  5.  $up = new Upload($_FILES['foto']);
  6.  $up->SetDir('img/');
  7.  $up->SetThumbDir('thumb/'); // katalog z plikami miniatur
  8.  $mime_types = array('image/jpeg','image/pjpg', 'image/pjpeg', 'image/jpg');
  9.  $up->SetMime($mime_types);
  10.  
  11.  if(($num = $up->Valid()) === true) {
  12.    $file = $up->SaveFile();
  13.  
  14.    if(!$file || !file_exists($file))
  15.     echo $up->Msg(-3);
  16.    else {
  17.    $thumb = array('thumb1' => array('width' => 90, 'height' => 90, 'proporcja' => 1),
  18.                   'thumb2' => array('width' => 370, 'height' => 250, 'proporcja' => 1),
  19.                   'thumb3' => array('width' => 400, 'height' => 400, 'proporcja' => 0)
  20.                   );
  21.  
  22.     $array = $up->MakeThumb($thumb);
  23.     $array['foto'] = $file;
  24.  
  25.     foreach($array as $key => $img_path) {
  26.      echo $key . '<br><img src="' . $img_path . '"><br>';
  27.     }
  28.    }
  29.  } else {
  30.   echo $up->Msg($num);
  31.  }
  32. }
  33. ?>


Formularz taki sam :-) Pozdrawiam.
Go to the top of the page
+Quote Post
EarthCitizen
post 22.01.2009, 04:50:40
Post #15





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

Ostrzeżenie: (0%)
-----


Nie mam siły o tej porze przeglądać całej klasy, ale do tablicy $mimes dodaj:

image/x-jpeg
image/x-gif

Dostałem takie z IE7 kiedyś i był kłopot...
Go to the top of the page
+Quote Post
98256
post 20.05.2009, 21:43:23
Post #16





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 24.03.2008

Ostrzeżenie: (0%)
-----


wszystko fajnie pieknie, ale sypie mi bledami, taki sam jak poprzednikowi xiaon

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /var/www/sites/yoyo.pl/p/l/plusjaslo/class.upload.php on line 3

w dalszej czesci watku doczytalem sie ze to przez php4,
jak to zrobic zeby to zadzailalo na hostingu yoyo ?

nikt nie pomoze :/ ?
z tego co szukalem na googlach to ten skrypt jest chyba najfajniej napisany, tylko dlaczego mi to nie chodzi ? sad.gif
szukam pomocy...

juz sobie sam poradzilem - dzieki wielkie za pomoc !

Ten post edytował 98256 12.05.2009, 20:20:58
Go to the top of the page
+Quote Post
tadeoooo
post 24.03.2010, 03:11:26
Post #17





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.02.2010
Skąd: Bruksela

Ostrzeżenie: (0%)
-----


Odświeżam bo mam błąd ale nie wiem jak go naprawić
Cytat
Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION in /home/oui/domains/***********/public_html/upload/class.upload.php on line 17


wszystko mam dobrze tak jak było opisane ;/


--------------------
DJ WitB
Go to the top of the page
+Quote Post
eai
post 24.03.2010, 10:03:33
Post #18





Grupa: Zarejestrowani
Postów: 367
Pomógł: 10
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----


Hej,

jestem autorem projektu http://code.google.com/p/nweb-image/ (pobierz).
Biblioteka ma bardzo dużo możliwości, więcej niż tylko upload i resize zdjęć, np. tworzenie własnych captcha http://code.google.com/p/nweb-image/wiki/Captcha itp.


Przykłady użycia uploadu:
http://image.nweb.pl/examples/upload-01.php
http://image.nweb.pl/examples/upload-02.php
http://image.nweb.pl/examples/upload-03.php
http://image.nweb.pl/examples/upload-04.php


więcej przykładów: http://image.nweb.pl/examples/


Gdybyś miał problem, albo jakieś pytania to pisz na PW, pomogę.
Go to the top of the page
+Quote Post
ksaw
post 20.07.2010, 15:58:33
Post #19





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 1.02.2009

Ostrzeżenie: (0%)
-----


a ja mam jedno pytanie !
skrypt nadaje wgrywanym plikom na serwer nazwy w postaci np. 20100720160419236.jpg
a jak zrobić aby zapisywał pliki bez zmiany nazwy ?
czyli wgrywam 13.jpg i zapisuje 13.jpg !
Go to the top of the page
+Quote Post
lukaszk
post 30.01.2011, 01:39:15
Post #20





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.12.2010

Ostrzeżenie: (0%)
-----


Witam, mam pewien problem. Wszystko działa czyli wrzucane są plik na serwer tworzona miniatura ale po wykonaniu się czynności pokazuje się błąd

  1. Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 4096 bytes) in C:\Program Files\VertrigoServ\www\class.upload.php on line 128
i absolutnie nie wiem jak temu zaradzić. Proszę o pomoc. Sory za odkopanie starego przykłądu

128 linia to ten fragment

  1. $image = imagecreatefromjpeg($this->FileName());
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.08.2025 - 03:42