Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: biblioteka GD
Forum PHP.pl > Forum > PHP
1maciek
witam, tak jak w temacie, generuje pomniejszone zdjecie i chcialbym zapisac je (to pomniejszone) na dysk, czy jest to mozliwe? a jesli tak to w jaki sposob
pozdrawiam
eai
Generujesz odpowiedni nagłówek header() który wysyła pliczek do przeglądarki "do pobrania"

  1. <?php
  2. function downloadFile ($file, $mimetype)
  3. {
  4. $status = 0;
  5. if (($file != NULL) && file_exists($file)) {
  6.  if(isset($_SERVER['HTTP_USER_AGENT']) &&
  7.  preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT']))
  8.  {
  9.  // IE Bug in download name workaround
  10.  ini_set( 'zlib.output_compression','Off' );
  11.  }
  12.  // header ('Content-type: ' . mime_content_type($file)
  13.  header ('Content-type: ' . $mimetype);
  14.  header ('Content-Disposition: attachment; filename="'.basename($file).'"');
  15.  header ('Expires: '.gmdate("D, d M Y H:i:s", mktime(date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y"))).' GMT');
  16.  header ('Accept-Ranges: bytes');
  17.  // Use Cache-control: private not following:
  18.  // header ('Cache-control: no-cache, must-revalidate');
  19.  header("Cache-control: private");  
  20.  header ('Pragma: private');
  21.  
  22.  $size = filesize($file);
  23.  if(isset($_SERVER['HTTP_RANGE'])) {
  24.  list($a, $range) = explode("=",$_SERVER['HTTP_RANGE']);
  25.  //if yes, download missing part
  26.  str_replace($range, "-", $range);
  27.  $size2 = $size-1;
  28.  $new_length = $size2-$range;
  29.  header("HTTP/1.1 206 Partial Content");
  30.  header("Content-Length: $new_length");
  31.  header("Content-Range: bytes $range$size2/$size");
  32.  }
  33.  else
  34.  {
  35.  $size2=$size-1;
  36.  header("Content-Range: bytes 0-$size2/$size");
  37.  header("Content-Length: ".$size);
  38.  }
  39.  
  40.  if ($file = fopen($file, 'r')) {
  41.  while(!feof($file) and (connection_status()==0)) {
  42.  print(fread($file, 1024*8));
  43.  flush();
  44.  }
  45.  $status = (connection_status() == 0);
  46.  fclose($file);
  47.  }
  48. }
  49. return($status);
  50. }
  51. ?>


http://pl.php.net/header
1maciek
chodzilo mi raczej o to aby skrypt to zrobieniu miniatury sam zapisywal go na dysku, bez zadnego pobierz plik, chodzi o to ze uploaduje sobie fotke do galerii a skrypt automatycznie generuje miniature i zapisuje w katalogu z miniaturami
1maciek
taki madry jestes Jojo to moze wiesz ktora z tych funkcji sluzy do zapisu, bo wg mnie zadna
eai
Jakbys otworzyl jeden z linkow jojo to byś wiedział że:


  1. <?php
  2.  
  3. function miniature($pict, $dest_pict){
  4.  
  5.  $handle = @imagecreatefromjpeg($pict);
  6.  
  7.  $x=imagesx($handle);
  8.  $y=imagesy($handle);
  9.  
  10.  if($x > $y){  
  11.  $max = $x;  
  12.  $min = $y;  
  13.  }  
  14.  if($x <= $y){  
  15.  $max = $y;  
  16.  $min = $x;  
  17.  }  
  18.  
  19. //$size_in_pixel : Size max of the label in pixel. The size of the picture being
  20. //proportional to the original, this value define maximum size
  21. //of largest side with dimensions of the picture. Sorry for my english !
  22.  
  23. //Here $size_in_pixel = 100 for a thumbnail.
  24.  $size_in_pixel = '100';
  25.  
  26.  $rate = $max/$size_in_pixel;
  27.  $final_x = $x/$rate;
  28.  $final_y = $y/$rate;
  29.  
  30.  if($final_x > $x) {
  31.  $final_x = $x;
  32.  $final_y = $y;
  33.  }
  34.  
  35.  $final_x = ceil($final_x);
  36.  $final_y = ceil($final_y);
  37.  
  38.  $black_picture = imageCreatetruecolor($final_x,$final_y);
  39.  imagefill($black_picture,0,0,imagecolorallocate($black_picture, 255, 255, 255));
  40.  imagecopyresampled($black_picture, $handle, 0, 0, 0, 0,$final_x, $final_y, $x, $y);
  41.  
  42.  if(!@imagejpeg($black_picture,$dest_pict.'/mini_'.$pict, $size_in_pixel))
  43.  imagestring($black_picture, 1, $final_x-4, $final_y-8, ".", imagecolorallocate($black_picture,0,0,0));
  44.  
  45.  //The number is the quality of the result picture
  46.  imagejpeg($black_picture,'', '100');
  47.  imagedestroy($handle);
  48.  imagedestroy($black_picture);
  49.  }
  50.  
  51. $pict = "PICT7024.jpg";
  52. $dest_pict = "D:/Program Files/EasyPHP1-7/www/test";
  53. miniature($pict, $dest_pict);
  54.  
  55. ?>
Jojo
Funkcja w komentarzach to jedno a nagłówek funkcji podany na samej górze strony to druga sprawa.
Na przykład:
Cytat
bool imagejpeg ( resource image [, string filename [, int quality]] )

Tak trudno się domyślić do czego służy parametr filename? A jak nie można się domyślić to może warto spróbować...
1maciek
i nie mozna tak bylo od razu winksmiley.jpg
wielkie dzieki eai i jojo
Jojo
W zasadzie to mamy tu EOT, ale jeszcze dorzucę parę słów:
A nie można było od razu zajrzeć do manuala? tongue.gif
kszychu
@Chomiczek nie matacz! Przeczytaj dokładnie wątek to będziesz wiedział o co chodzi, i że to co podałeś ma się do problemu jak pięść do nosa.
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.