Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem ze skryptem wgrywania zdjęć
Forum PHP.pl > Forum > PHP
Falcon2
Witam

Posiadam taki skrypt do wgrywania zdjęć do folderu "img" z formularza + zmniejszanie ich rozmiaru przed wgraniem:

  1. <form enctype="multipart/form-data" action="u.php" method="post">
  2. <input type="file" name="plik"><br />
  3. <input type="submit" value="Wyślij na serwer">
  4. </form>
  5. <br />
  6.  
  7. <?
  8. /****** image *******/
  9. function imgType($name)
  10. {
  11.   if(substr($name, -4, 4) == '.jpg' || substr($name, -4, 4) == 'jpeg')
  12.   {
  13.      return "IMAGETYPE_JPEG";
  14.   }
  15.   elseif(substr($name, -4, 4) == '.gif')
  16.   {
  17.      return "IMAGETYPE_GIF";
  18.   }
  19.   elseif(substr($name, -4, 4) == '.png')
  20.   {
  21.      return "IMAGETYPE_PNG";
  22.   }
  23. }
  24.  
  25. function resizeImage($source, $image_new_x, $save_image, $jpeg_quality = 100)
  26. {
  27.  
  28.  
  29.   /*
  30.     * source - obrazek jpeg
  31.     * max_x - maksymalna szerokosc pomniejszonego obrazka
  32.     * max_y - maksymalna dlugosc pomniejszonego obrazka
  33.     * save_image - nazwa pliku do ktorego zostanie zapisany nowy obrazek
  34.     * jpeg_quality - jakosc powstalego obrazu jpeg - jezeli bedzie inny to argument jest nie wazny (domyslnie 100)
  35.     */
  36.  
  37.      if(imgType($source) == "IMAGETYPE_JPEG")
  38.      {
  39.         $img_src = imagecreatefromjpeg($source);
  40.      }
  41.      elseif(imgType($source) == "IMAGETYPE_GIF")
  42.      {
  43.         $img_src = imagecreatefromgif($source);
  44.      }
  45.      elseif(imgType($source) == "IMAGETYPE_PNG")
  46.      {
  47.         $img_src = imagecreatefrompng($source);
  48.      }
  49.      else
  50.      {
  51.         die('Zly typ pliku! Akceptowane jedynie: JPG/JPEG, GIF, PNG');
  52.      }
  53.  
  54.   $image_x = imagesx($img_src);
  55.   $image_y = imagesy($img_src);
  56.  
  57.    //ma byc proporcjonalna
  58.    
  59.    $image_new_y = $image_y*$image_new_x/$image_x;
  60.    
  61.    
  62.      $new_img = imagecreatetruecolor($image_new_x, $image_new_y);
  63.      $background = imagecolorallocate($new_img, 255, 255, 255);
  64.      imagefill($new_img, 0, 0, $background);
  65.      imagecopyresampled($new_img, $img_src, 0, 0, 0, 0, $image_new_x, $image_new_y, $image_x, $image_y);
  66.  
  67.      if(imgType($save_image) == "IMAGETYPE_JPEG")
  68.      {
  69.         imagejpeg($new_img, $save_image, $jpeg_quality);
  70.      }
  71.      elseif(imgType($save_image) == "IMAGETYPE_GIF")
  72.      {
  73.         imagegif($new_img, $save_image, $jpeg_quality);
  74.      }
  75.      elseif(imgType($save_image) == "IMAGETYPE_PNG")
  76.      {
  77.         imagepng($new_img, $save_image, $jpeg_quality);
  78.      }
  79.  
  80.   echo '<img src="'.$save_image.'" border="1">';
  81. }
  82. /****** image *******/
  83.  
  84.  
  85.  
  86.  
  87. if($_FILES['plik'])
  88. {
  89. if ($_FILES['plik']['type']=="image/jpeg"
  90.   || $_FILES['plik']['type']=="image/gif" || $_FILES['plik']['type']=="image/png")
  91.   {
  92.  $uploaded = "img/". $_FILES['plik']['name'];
  93.  if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  94.    if ($_FILES['plik']['size'] > 1024*1024) {
  95.      echo 'Plik jest za duży';
  96.    } else {
  97.      move_uploaded_file($_FILES['plik']['tmp_name'],$uploaded);
  98.      echo "Operacja przebiegła pomyślnie";
  99.    }
  100.  } else {
  101.    echo 'Błąd przy przesyłaniu danych!';
  102.  }
  103.  }
  104.  else
  105.  {
  106.      echo 'podany plik nie jest plikiem jpg/jpeg/gif!';
  107.  }
  108. }
  109.  
  110. if(isset($_FILES['plik']['name']))
  111. {
  112. echo $_FILES['plik']['name'];
  113. resizeImage('img/'.$_FILES['plik']['name'].'', 100,'img/'.$_FILES['plik']['name'].'', 50); // (4 parametr opcjonalnie dla jpg)
  114. }
  115.  
  116.  
  117. ?>

W jaki sposób można go przerobić, aby była możliwość wgrywania pliku zewnętrznego z linku URL?
Sky_walker
  1. <?php
  2. $nazwa_pliku = "http://www.example.com/jakisobrazek.gif";
  3. $uchwyt = fopen($nazwa_pliku, "rb");
  4. $tresc = fread($uchwyt, filesize($nazwa_pliku));
  5. fclose($uchwyt);
  6. ?>

potem fwrite zapisujesz dane z $tresc i masz obrazek smile.gif


fopen obsługuje protokuł http więc całość sprowadza się do zwykłego czytania i zapisania pliku.

Alternatywnie możesz spróbować z cURL.
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.