Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: generowanie grafiki
Forum PHP.pl > Forum > PHP
Gordon1x
  1. <?php
  2. define('FILE_APPEND', 1);
  3.  
  4. include("configs/conf.php");
  5.  
  6. mysql_pconnect ("$mysql[host]", "$mysql[login]", "$mysql[pass]") or
  7.  die ("Nie można połączyć się z bazą danych");
  8. mysql_select_db ("$mysql[baza]") or
  9.  die ("Nie można połączyć się z bazą danych");
  10.  
  11. $sql_grafika = "SELECT * FROM galeria WHERE id = '$pathimg' LIMIT 1";
  12. $result_grafika = mysql_query($sql_grafika);
  13. $row_grafika = mysql_fetch_assoc($result_grafika);
  14.  
  15. $obrazek = $row_grafika['obrazek'];
  16. $typ_pliku = $row_grafika['obrazek_mime'];
  17. $nazwa_pliku = $row_grafika['obrazek_name'];
  18. $rozmiar_pliku = $row_grafika['obrazek_size'];
  19.  
  20. function file_put_contents($n, $d, $flag = false){
  21.  $mode = ($flag == FILE_APPEND || strtoupper($flag) == 'FILE_APPEND') ? 'a' : 'w';
  22.  $f = @fopen($n, $mode);
  23.  if ($f === false){
  24. return 0;
  25.  }
  26.  else {
  27. if (is_array($d)) $d = implode($d);
  28.  $bytes_written = fwrite($f, $d);
  29.  fclose($f);
  30.  return $bytes_written;
  31. }
  32. }
  33.  
  34. $filename = tempnam('', '');
  35. file_put_contents($filename, $obrazek);
  36.  
  37. list($width, $height) = getimagesize($filename);
  38.  
  39. $image_p = imagecreatetruecolor($xsize, $ysize);
  40. $image = imagecreatefromjpeg($filename);
  41. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $xsize, $ysize, $width, $height);
  42.  
  43. unlink($filename);
  44.  
  45. // Jeśli chcesz znać rozmiar nowego obrazka
  46.  
  47.  imagejpeg($image_p, null, $quality);
  48.  $image_data = ob_get_contents();
  49.  
  50. $file_size = strlen($image_data);
  51.  
  52. header("Content-type: $typ_pliku");
  53. header("Content-lengtt: $file_size");
  54. header("Content-Disposition: attachment; filename = $nazwa_pliku");
  55. print ("$image_data");
  56. ?>


Jak prezrobić ten skrypt aby najpierw skrypt sprawdił czy plik jest zapisany w katalogu imagetemp (jeżeli jest to żeby go wysłał).
Jeżeli plik nieistnieje to żeby go wygenerował i zapisał do katakogu pod nazwą $nazwa = $nazwa_pliku i wysłał go do użytkownika.
Kicok
1. file_exists" title="Zobacz w manualu PHP" target="_manual - sprawdzamy, czy plik istnieje jeśli nie to:
- generujemy obrazek
- imagejpeg" title="Zobacz w manualu PHP" target="_manual zapisujemy do na dysku

2. header" title="Zobacz w manualu PHP" target="_manual wysyłamy nagłówki
3. readfile" title="Zobacz w manualu PHP" target="_manual wysyłamy plik
Gordon1x
  1. <?php
  2. define('FILE_APPEND', 1);
  3.  
  4. include("configs/conf.php");
  5.  
  6. mysql_pconnect ("$mysql[host]", "$mysql[login]", "$mysql[pass]") or
  7.  die ("Nie można połączyć się z bazą danych");
  8. mysql_select_db ("$mysql[baza]") or
  9.  die ("Nie można połączyć się z bazą danych");
  10.  
  11. $sql_grafika = "SELECT * FROM galeria WHERE id = '$pathimg' LIMIT 1";
  12. $result_grafika = mysql_query($sql_grafika);
  13. $row_grafika = mysql_fetch_assoc($result_grafika);
  14.  
  15. $obrazek = $row_grafika['obrazek'];
  16. $typ_pliku = $row_grafika['obrazek_mime'];
  17. $nazwa_pliku = $row_grafika['obrazek_name'];
  18. $rozmiar_pliku = $row_grafika['obrazek_size'];
  19.  
  20. function file_put_contents($n, $d, $flag = false){
  21.  $mode = ($flag == FILE_APPEND || strtoupper($flag) == 'FILE_APPEND') ? 'a' : 'w';
  22.  $f = @fopen($n, $mode);
  23.  if ($f === false){
  24. return 0;
  25.  }
  26.  else {
  27. if (is_array($d)) $d = implode($d);
  28.  $bytes_written = fwrite($f, $d);
  29.  fclose($f);
  30.  return $bytes_written;
  31. }
  32. }
  33.  
  34. $filename = "imagetemp/$nazwa_pliku";
  35.  
  36. if (file_exists($filename)){
  37.  $imagedata = readfile($filename);
  38.  $file_size = ""; // problem
  39. }
  40. else{
  41.  $filename = tempnam('', '');
  42.  file_put_contents($filename, $obrazek);
  43.  
  44.  list($width, $height) = getimagesize($filename);
  45.  
  46.  $image_p = imagecreatetruecolor($xsize, $ysize);
  47.  $image = imagecreatefromjpeg($filename);
  48.  imagecopyresampled($image_p, $image, 0, 0, 0, 0, $xsize, $ysize, $width, $height);
  49.  
  50.  unlink($filename);
  51.  
  52.  // Jeśli chcesz znać rozmiar nowego obrazka
  53.  
  54.  $link = "imagetemp/$nazwa_pliku";
  55.  
  56. imagejpeg($image_p, $nazwa_pliku, $quality);
  57. $image_data = ob_get_contents();
  58.  
  59.  $file_size = strlen($image_data);
  60.  
  61. }
  62.  
  63. header("Content-type: $typ_pliku");
  64. header("Content-lengtt: $file_size");
  65. header("Content-Disposition: attachment; filename = $nazwa_pliku");
  66. print ("$image_data");
  67. ?>


Tylko jak odczytać rozmiar już zapisanego pliku.
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.