Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]upload zdjecia wraz z generowaniem miniaturek
Forum PHP.pl > Forum > Przedszkole
b0nz0
Witam mam problem odnosnie wysyłania zdjec na serwer typu png .
Mam własna galerie która przy uploadzie tworzy miniaturke zdjecia automatycznie.Zdjecie jest zapisywane oddzielnie do innego katalogu natomiant miniaturka do innego.Ta czesc kodu działa mi dla jpg i gifów ,przy niwielkiej modernizacji podstawowych funkcji typu imagegif zaminiam na imagepng itd. Natomiast dla rozszerzenia png nie działa .wysyła zdjecie i mianiaturke ale niestety jej nie wyswietla .Natomiast jesli zdjecie i miniatórke wrzuce recznie wszystko wyswietla ok wiec to wina tego kodu a nie obsługi tego typu lików na serwerze.Z góry dziekuje za pomoc.
Oto częsc kodu :

  1. <?php
  2. $plik_tmp = $_FILES['pliki']['tmp_name'];
  3. $plik_nazwa = $_FILES['pliki']['name'];
  4. $plik_rozmiar = $_FILES['pliki']['size'];
  5.  
  6. if(is_uploaded_file($plik_tmp)){
  7. $sp = explode(".",$plik_nazwa);
  8. if ($sp[1]=="GIF" || $sp[1]=="gif"){
  9.  if($plik_rozmiar <="9000000"){
  10.  if(move_uploaded_file($plik_tmp,"zdjecia/".$plik_nazwa)){
  11.  // ustalanie nazwy pliku
  12.  $sciezka = pathinfo($plik_nazwa);
  13. if(copy("zdjecia/".$plik_nazwa, "miniaturki/".$plik_nazwa)){
  14. //generowanie wielkosci zdjecia( max 600 x 600 )
  15. $wymiar = getimagesize("zdjecia/".$plik_nazwa); // wymiary oryginalnego obrazka
  16. if($wymiar[0] > $wymiar[1]){ $wys_nor = round((600*$wymiar[1]/$wymiar[0]), 0); $szer_nor = 600; }
  17. if($wymiar[0] < $wymiar[1]){ $szer_nor = round((600*$wymiar[0]/$wymiar[1]), 0); $wys_nor = 600; }
  18. if($wymiar[0] == $wymiar[1]){ $wys_nor = 600; $szer_nor = 600; }
  19. $PustyObrazek = imagecreatetruecolor($szer_nor, $wys_nor);
  20. $nowy = imagecreatefromgif("zdjecia/".$plik_nazwa);
  21. imagecopyresized($PustyObrazek, $nowy, 0, 0, 0, 0, $szer_nor, $wys_nor, $wymiar[0], $wymiar[1]);
  22. // tworzenie miniatury zdjęcia o wymiarze ( max 100 x 100 )
  23. if($wymiar[0] > $wymiar[1]){ $wys_mini = round((100*$wymiar[1]/$wymiar[0]), 0); $szer_mini = 100; }
  24. if($wymiar[0] < $wymiar[1]){ $szer_mini = round((100*$wymiar[0]/$wymiar[1]), 0); $wys_mini = 100; }
  25. if($wymiar[0] == $wymiar[1]){ $wys_mini = 100; $szer_mini = 100; }
  26. $mini = imagecreatetruecolor($szer_mini, $wys_mini);
  27. $nowy = imagecreatefromgif("zdjecia/".$plik_nazwa);
  28. imagecopyresized($mini, $nowy, 0, 0, 0, 0, $szer_mini, $wys_mini, $wymiar[0], $wymiar[1]);
  29. // tworzenie zdjęcia i miniatury
  30. imagegif($PustyObrazek, "zdjecia/".$plik_nazwa, 100) && imagegif($mini, "miniaturki/".$plik_nazwa, 100);
  31.  
  32. ?>
slawek_master
popraw kontekst, kod php daj w odpowiedni tag
Shili
To zapewne nie jest cały kod, którego używasz, prosiłabym ze swojej strony wrzucić ten cały kod.
Lonas
polecam :

http://www.verot.net/php_class_upload.htm
b0nz0
To jest kawałek skryptu reszta jest gdy zdjecie jest typu gif i jpg.Tylko ,że chodzi o to ze dla gifów i jpg działa skrypt natomiast dla png tworzy zdjecie i miniatórke ,której nie mozna otworzyć żadnym programem.Wiec cos jest nie tak w tej częsci skryptu. Prosze o pomoc?
nospor
Cytat
przy niwielkiej modernizacji podstawowych funkcji typu imagegif zaminiam na imagepng itd.
No to moze cos źle zamieniasz... pokad dokladnie kod, ktory nie dziala, bo ten co pokazales to dziala wiec nam nic to nie mowi.
b0nz0
No ale własnie chodzi o to że błedu wogule nie wyzuca tylko to przetworzone zdjecie w galerii sie nie wyswietla nie weim czego? A wielkosc zapisuje na 33 KB bezwzgledu ile wysyłane zdjecie zajmuje.

  1. <?php
  2. if ($sp[1]=="PNG" || $sp[1]=="png"){
  3.  if($plik_rozmiar <="9000000"){
  4.  if(move_uploaded_file($plik_tmp,"zdjecia/".$plik_nazwa)){
  5.  $sciezka = pathinfo($plik_nazwa);
  6. if(copy("zdjecia/".$plik_nazwa, "miniaturki/".$plik_nazwa)){
  7. $wymiar = getimagesize("zdjecia/".$plik_nazwa); // wymiary oryginalnego obrazka
  8. if($wymiar[0] > $wymiar[1]){ $wys_nor = round((600*$wymiar[1]/$wymiar[0]), 0); $szer_nor = 600; }
  9. if($wymiar[0] < $wymiar[1]){ $szer_nor = round((600*$wymiar[0]/$wymiar[1]), 0); $wys_nor = 600; }
  10. if($wymiar[0] == $wymiar[1]){ $wys_nor = 600; $szer_nor = 600; }
  11. $PustyObrazek = imagecreatetruecolor($szer_nor, $wys_nor);
  12. ?>


dalsza czesc:
  1. <?php
  2. $nowy = imagecreatefrompng("zdjecia/".$plik_nazwa);
  3. imagecopyresized($PustyObrazek, $nowy, 0, 0, 0, 0, $szer_nor, $wys_nor, $wymiar[0], $wymiar[1]);
  4. if($wymiar[0] > $wymiar[1]){ $wys_mini = round((100*$wymiar[1]/$wymiar[0]), 0); $szer_mini = 100; }
  5. if($wymiar[0] < $wymiar[1]){ $szer_mini = round((100*$wymiar[0]/$wymiar[1]), 0); $wys_mini = 100; }
  6. if($wymiar[0] == $wymiar[1]){ $wys_mini = 100; $szer_mini = 100; }
  7. $mini = imagecreatetruecolor($szer_mini, $wys_mini);
  8. $nowy = imagecreatefrompng("zdjecia/".$plik_nazwa);
  9. imagecopyresized($mini, $nowy, 0, 0, 0, 0, $szer_mini, $wys_mini, $wymiar[0], $wymiar[1]);
  10. imagepng($PustyObrazek, "zdjecia/".$plik_nazwa, 100) && imagepng($mini, "miniaturki/".$plik_nazwa, 100);
  11. ?>
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.