Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Imageshack - zrobiłem ale...
Forum PHP.pl > Forum > PHP
Nightwalker
Witam
Napisalem skrypt a'la imageshack.us

  1. <?php
  2.  
  3. #########################################################
  4. # #
  5. # Skrypt a'la imageshack.us lub fotosik.pl #
  6. # Jego zadaniem jest wgranie pliku na serwer, #
  7. # utworzenie miniaturki oraz utworzenie #
  8. # gotowych linkow ze znacznikami na forum #
  9. # oraz strone www. #
  10. # #
  11. # Skrypt napisany przez Nightwalkera #
  12. # Mozesz go uzywac do celow nie komercyjnych #
  13. # oraz nie mozesz usuwac tego naglowka! #
  14. # #
  15. # email autora: admin@smallville.pl #
  16. # www autora: http://smallville.pl/ #
  17. # GG autora: 5608039 #
  18. # #
  19. # Wersja skryptu: 1.1 beta #
  20. # Data napisania: 11 Marca 2006 #
  21. # Ostatnia aktualizacja: 12 Marzec 2006 #
  22. # #
  23. #########################################################
  24.  
  25. if(isset($_POST['Submit']))
  26.  
  27. {
  28. // Wczytywanie pliku z configiem
  29.  
  30. include("config.php");
  31.  
  32. $uzyj_nazwy = $_FILES['image']['name'];
  33. $uzyj_nazwy_min = $_FILES['image']['tmp_name'];
  34. $uzyj_nazwy_roz = $_FILES['image']['size'];
  35. $uzyj_nazwy_typ = $_FILES['image']['type'];
  36.  
  37. if (isset($_FILES['image']['name'])) 
  38. {
  39. $obrazek = $katalog.$numer.$uzyj_nazwy;
  40. $image = $adres.$katalog.$numer.$uzyj_nazwy;
  41.  
  42. $obrazek_min = $katmin.$prefix.$numer.$uzyj_nazwy;
  43. $image_thumb = $adres.$obrazek_min;
  44.  
  45. move_uploaded_file($uzyj_nazwy_min, $obrazek);
  46. chmod ($obrazek, octdec($upraw));
  47.  
  48. $rozmiary = getimagesize($obrazek);
  49.  
  50. $proporcje = $rozmiary[1]/$rozmiary[0]; 
  51.  
  52. if ($rozmiary[1] <= $rozmiar)
  53. {
  54. $nowa_szerokosc = $rozmiary[0];
  55. $nowa_wysokosc = $rozmiary[1];
  56. }else{
  57. $nowa_wysokosc = $rozmiar;
  58. $nowa_szerokosc = abs($nowa_wysokosc/$proporcje);
  59. }
  60.  
  61. $obrazek_docelowy=ImageCreateTrueColor($nowa_szerokosc,$nowa_wysokosc) or die('Blad podczas tworzenia obrazka');
  62. $obrazek_zrodlowy=ImageCreateFromJPEG($obrazek) or die('Problem z otwarciem zrodlowego obrazka');
  63. ImageCopyResized($obrazek_docelowy,$obrazek_zrodlowy,0,0,0,0,$nowa_szerokosc,$nowa_wysokosc,ImageSX($obrazek_zrodlowy),ImageSY($obrazek_zrodlowy)) or die('Problem podczas skalowania');
  64. ImageJPEG($obrazek_docelowy,$obrazek_min,$jakosc) or die('Problem podczas zapisywania, sprawdz CHMODY');
  65. imagedestroy($obrazek_docelowy);
  66. }
  67.  
  68. // Wczytywanie pliku template/upload_done.tpl ktory zawiera szablon uploadu po wykonaniu.
  69.  
  70. require_once("template/upload_done.tpl");
  71.  
  72. }else{
  73.  
  74. // Wczytywanie pliku template/upload_start.tpl ktory zawiera szablon formularza uploadu.
  75.  
  76. require_once("template/upload_start.tpl");
  77.  
  78. }
  79.  
  80. ?>


Wszystko bylo by pieknie ale mam problem, nie wiem co z tym zrobic:

  1. <?php
  2. $obrazek_zrodlowy=ImageCreateFromJPEG($obrazek) or die('Problem z otwarciem zrodlowego obrazka');
  3. ?>


czyli jezeli plik do uploadu bedzie jpeg bedzie OK, ale jak gif lub png no to klapa :/ nie wiecie moze co z tym fantem zrobic? (jak sprawić aby skrypt rozpoznawał co mu sie podaje i automatycznie zmieniał ImageCreateFromJPEG na np ImageCreateFromGIF)

Pliki skryptu: http://www.sendspace.com/file/ywwpdf (skrypt poprawiony, obsluguje pliki jpg, png, gif)

Dzialanie skryptu mozecie sobie sprawdzic tutaj: http://smallville.pl/upload/

Pozdravki
Nightwalker
Jestem świeży w php...

Ps:
Cytat
czyli jezeli plik do uploadu bedzie jpeg bedzie OK, ale jak gif lub png no to klapa :/ nie wiecie moze co z tym fantem zrobic? (jak sprawić aby skrypt rozpoznawał co mu sie podaje i automatycznie zmieniał ImageCreateFromJPEG na np ImageCreateFromGIF)
chomiczek
użyj szukaj, ewentualnie poszukaj w kilku/kilkunastu ostatnich postach na forum, bo temat rozpoznawania pliku został poruszany.. ogólnie możesz rozbić nazwe pliku i sprawdzić rozszeżenie

P.S. Proponuje przenieść do PRZEDSZKOLA
Nightwalker
dzięki za wskazówki, znalazłem funkcje

pathinfo( $zmienna, PATHINFO_EXTENSION );

więc spróbowałem to użyć w moim skrypcie w taki sposób:

  1. <?php
  2.  
  3. #########################################################
  4. # #
  5. # Skrypt a'la imageshack.us lub fotosik.pl #
  6. # Jego zadaniem jest wgranie pliku na serwer, #
  7. # utworzenie miniaturki oraz utworzenie #
  8. # gotowych linkow ze znacznikami na forum #
  9. # oraz strone www. #
  10. # #
  11. # Skrypt napisany przez Nightwalkera #
  12. # Mozesz go uzywac do celow nie komercyjnych #
  13. # oraz nie mozesz usuwac tego naglowka! #
  14. # #
  15. # email autora: admin@smallville.pl #
  16. # www autora: http://smallville.pl/ #
  17. # GG autora: 5608039 #
  18. # #
  19. # Wersja skryptu: 1.1 beta #
  20. # Data napisania: 11 Marca 2006 #
  21. # Ostatnia aktualizacja: 12 Marzec 2006 #
  22. # #
  23. #########################################################
  24.  
  25. if(isset($_POST['Submit']))
  26.  
  27. {
  28. // Wczytywanie pliku z configiem
  29.  
  30. include("config.php");
  31.  
  32. $uzyj_nazwy = $_FILES['image']['name'];
  33. $uzyj_nazwy_min = $_FILES['image']['tmp_name'];
  34. $uzyj_nazwy_roz = $_FILES['image']['size'];
  35. $uzyj_nazwy_typ = $_FILES['image']['type'];
  36.  
  37. if (isset($_FILES['image']['name'])) 
  38. {
  39. $obrazek = $katalog.$numer.$uzyj_nazwy;
  40. $image = $adres.$katalog.$numer.$uzyj_nazwy;
  41.  
  42. $obrazek_min = $katmin.$prefix.$numer.$uzyj_nazwy;
  43. $image_thumb = $adres.$obrazek_min;
  44.  
  45. move_uploaded_file($uzyj_nazwy_min, $obrazek);
  46. chmod ($obrazek, octdec($upraw));
  47.  
  48. $rozmiary = getimagesize($obrazek);
  49.  
  50. $proporcje = $rozmiary[1]/$rozmiary[0]; 
  51.  
  52. if ($rozmiary[1] <= $rozmiar)
  53. {
  54. $nowa_szerokosc = $rozmiary[0];
  55. $nowa_wysokosc = $rozmiary[1];
  56. }else{
  57. $nowa_wysokosc = $rozmiar;
  58. $nowa_szerokosc = abs($nowa_wysokosc/$proporcje);
  59. }
  60.  
  61. $ext = pathinfo( $uzyj_nazwy, PATHINFO_EXTENSION );
  62. $ext = str_replace('jpg, JPEG, $ext');
  63. $obrazek_docelowy=ImageCreateTrueColor($nowa_szerokosc,$nowa_wysokosc) or die('Blad podczas tworzenia obrazka');
  64. $obrazek_zrodlowy=ImageCreateFrom.$ext.($obrazek) or die('Problem z otwarciem zrodlowego obrazka');
  65. ImageCopyResized($obrazek_docelowy,$obrazek_zrodlowy,0,0,0,0,$nowa_szerokosc,$nowa_wysokosc,ImageSX($obrazek_zrodlowy),ImageSY($obrazek_zrodlowy)) or die('Problem podczas skalowania');
  66. ImageJPEG($obrazek_docelowy,$obrazek_min,$jakosc) or die('Problem podczas zapisywania, sprawdz CHMODY');
  67. imagedestroy($obrazek_docelowy);
  68. }
  69.  
  70. // Wczytywanie pliku template/upload_done.tpl ktory zawiera szablon uploadu po wykonaniu.
  71.  
  72. require_once("template/upload_done.tpl");
  73.  
  74. }else{
  75.  
  76. // Wczytywanie pliku template/upload_start.tpl ktory zawiera szablon formularza uploadu.
  77.  
  78. require_once("template/upload_start.tpl");
  79.  
  80. }
  81.  
  82. ?>


jednak skrypt zwraca błąd podczas uploadu:

Kod
Warning: Wrong parameter count for str_replace() in /home/chesterb/public_html/upload/index.php on line 62

Warning: imagesx(): supplied argument is not a valid Image resource in /home/chesterb/public_html/upload/index.php on line 65

Warning: imagesy(): supplied argument is not a valid Image resource in /home/chesterb/public_html/upload/index.php on line 65

Warning: imagecopyresized(): supplied argument is not a valid Image resource in /home/chesterb/public_html/upload/index.php on line 65
Problem podczas skalowania


(użyłem str_replace ponieważ funkcja zwracała jpg)
wojto
  1. <?php
  2. str_replace('jpg', 'JPEG', $ext)
  3. ?>

lub strtoupper" title="Zobacz w manualu php" target="_manual
nie mozesz uzywac zmiennych $_FILES['image']['name'] zamiast tworzyc nowa $uzyj_nazwy, $uzyj_nazwy_min itp. ?
kilka dodatkowych, niepotrzebnych zmiennych, np. $proporcje
Nightwalker
jak już pisałem jestem świeży, skrypt zrobiłem przeszukując google i książki biggrin.gif

ale poradziłem sobie już, wiem że paskudnie ale działa...

  1. <?php
  2.  
  3. #########################################################
  4. # #
  5. # Skrypt a'la imageshack.us lub fotosik.pl #
  6. # Jego zadaniem jest wgranie pliku na serwer, #
  7. # utworzenie miniaturki oraz utworzenie #
  8. # gotowych linkow ze znacznikami na forum #
  9. # oraz strone www. #
  10. # #
  11. # Skrypt napisany przez Nightwalkera #
  12. # Mozesz go uzywac do celow nie komercyjnych #
  13. # oraz nie mozesz usuwac tego naglowka! #
  14. # #
  15. # email autora: admin@smallville.pl #
  16. # www autora: http://smallville.pl/ #
  17. # GG autora: 5608039 #
  18. # #
  19. # Wersja skryptu: 1.1 beta #
  20. # Data napisania: 11 Marca 2006 #
  21. # Ostatnia aktualizacja: 12 Marzec 2006 #
  22. # #
  23. #########################################################
  24.  
  25. if(isset($_POST['Submit']))
  26.  
  27. {
  28. // Wczytywanie pliku z configiem
  29.  
  30. include("config.php");
  31.  
  32. $uzyj_nazwy = $_FILES['image']['name'];
  33. $uzyj_nazwy_min = $_FILES['image']['tmp_name'];
  34. $uzyj_nazwy_roz = $_FILES['image']['size'];
  35. $uzyj_nazwy_typ = $_FILES['image']['type'];
  36.  
  37. if (isset($_FILES['image']['name'])) 
  38. {
  39. $obrazek = $katalog.$numer.$uzyj_nazwy;
  40. $image = $adres.$katalog.$numer.$uzyj_nazwy;
  41.  
  42. $obrazek_min = $katmin.$prefix.$numer.$uzyj_nazwy;
  43. $image_thumb = $adres.$obrazek_min;
  44.  
  45. move_uploaded_file($uzyj_nazwy_min, $obrazek);
  46. chmod ($obrazek, octdec($upraw));
  47.  
  48. $rozmiary = getimagesize($obrazek);
  49.  
  50. $proporcje = $rozmiary[1]/$rozmiary[0]; 
  51.  
  52. if ($rozmiary[1] <= $rozmiar)
  53. {
  54. $nowa_szerokosc = $rozmiary[0];
  55. $nowa_wysokosc = $rozmiary[1];
  56. }else{
  57. $nowa_wysokosc = $rozmiar;
  58. $nowa_szerokosc = abs($nowa_wysokosc/$proporcje);
  59. }
  60.  
  61. // Pseudo rozpoznawanie typu pliku (podziekowania dla php.pl)
  62.  
  63. $ext = pathinfo( $uzyj_nazwy, PATHINFO_EXTENSION );
  64. $ext = str_replace("jpg", "ImageCreateFromJPEG", "$ext");
  65. $ext = str_replace("gif", "ImageCreateFromGIF", "$ext");
  66. $ext = str_replace("png", "ImageCreateFromPNG", "$ext");
  67.  
  68. $obrazek_docelowy=ImageCreateTrueColor($nowa_szerokosc,$nowa_wysokosc) or die('Blad podczas tworzenia obrazka');
  69. $obrazek_zrodlowy=$ext($obrazek) or die('Problem z otwarciem zrodlowego obrazka');
  70. ImageCopyResized($obrazek_docelowy,$obrazek_zrodlowy,0,0,0,0,$nowa_szerokosc,$nowa_wysokosc,ImageSX($obrazek_zrodlowy),ImageSY($obrazek_zrodlowy)) or die('Problem podczas skalowania');
  71. ImageJPEG($obrazek_docelowy,$obrazek_min,$jakosc) or die('Problem podczas zapisywania, sprawdz CHMODY');
  72. imagedestroy($obrazek_docelowy);
  73. }
  74.  
  75. // Wczytywanie pliku template/upload_done.tpl ktory zawiera szablon uploadu po wykonaniu.
  76.  
  77. require_once("template/upload_done.tpl");
  78.  
  79. }else{
  80.  
  81. // Wczytywanie pliku template/upload_start.tpl ktory zawiera szablon formularza uploadu.
  82.  
  83. require_once("template/upload_start.tpl");
  84.  
  85. }
  86.  
  87. ?>


Pozdravki
chomiczek
hmm.. a nie łatwiej np:
  1. <?php
  2. if (strpos($_FILES['image']['name'],'.jpg')!='') {
  3. //tutaj wykonujesz wszystko to co potrzebujesz do zrobienia miniaturki
  4. }
  5. ?>


po co takie coś?:
Cytat
$ext = pathinfo( $uzyj_nazwy, PATHINFO_EXTENSION );

nie lepiej użyć takiej konstrukcji:
  1. <?php
  2. $ext = imagecreatefromjpeg("lokalizacjaKataloguZUplowanymiFotami/".$plik.".jpg");
  3. ?>


P.S. Proponuje użyć imagecopyresampled" title="Zobacz w manualu php" target="_manual zamiast imagecopyresized" title="Zobacz w manualu php" target="_manual

P.S. 2. Proponuje używać
  1. <?php
  2.  if (move_uploaded_file()) {
  3.  //tutaj operacja na zdjęciu
  4. }
  5.  
  6. ?>


Jest to o tyle dobre, że dopiero kiedy plik został pomyślnie uploadowany możesz wykonywać na nim jakieś operacje, a póki co Ty używasz move_uploaded_file() ale i tak wykonujesz całą reszte.
Nightwalker
dzięki za wskazówki, jutro postaram sie to zmienic smile.gif
konys
Cytat
        // Pseudo rozpoznawanie typu pliku (podziekowania dla php.pl)

    $ext = pathinfo( $uzyj_nazwy, PATHINFO_EXTENSION );
    $ext = str_replace("jpg", "ImageCreateFromJPEG", "$ext");
    $ext = str_replace("gif", "ImageCreateFromGIF", "$ext");
    $ext = str_replace("png", "ImageCreateFromPNG", "$ext");


Jeszcze można by zamiast powyższego pseudorozpoznawania skorzystać z danych dostarczonych przez funkcję getimagesize(). Tak więc w Twoim przypadku możesz sprawdzić typ pliku poprzez odpowiedniego switcha zastosowanego na zmiennej
  1. <?php
  2. $rozmiary[2]
  3. ?>
- rozpoznawane typy plików znajdziesz tu.
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.