Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Upload obrazków, wydajność
Bajki
post
Post #1





Grupa: Zarejestrowani
Postów: 128
Pomógł: 1
Dołączył: 28.04.2005
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam
dopiero zaczynam zabawe z biblioteką GD i mam pewne pytanie z serii 'czy dobrze rozumuje' ;P
z tego co widze w przykładach, biblioteka ta moze dokonywac operacjii na plikach juz wrzuconych na serwer.

Oto co powinno sie dziać :
1. Użytkownik wybiera obrazek z dysku w formularzu i wciska 'wyślij'
2. Tworzone są 3 wersje pliku :
*miniatura
*średni rozmiar
*maksymalny rozmiar (jednak nie taki jak oryginal ale z jakimiś limitami wysokości i szerokości (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) )


i teraz moje pytanie, czy taki sposób wrzucania pliku jest wydajny, nie przekombinowany i cyz nie istnieja jakies prostsze sposoby (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) oto pomysł :

1. Upload pliku do jakiegoś tymczasowego folderu TEMP (w oryginalnych rozmiarach)
2. Stworzenie miniatury, stworzenie średniego formatu i stworzenie najwiekszej wersjii przy pomocy biblioteki GD oraz zapisywanie tych wersjii w odpowiednich folderach
3. Usunięcie oryginalnego pliku z folderu TEMP

Prosze o jakieś pomysły i sugestie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
em1X
post
Post #2





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

Ostrzeżenie: (0%)
-----


Ludzie, czy wy nie macie tabulatorów tylko piszecie wszystko jednym ciurkiem.. to tak jak pisać wypracowanie bez kropek i przecinków. Potem się dziwisz, że błędów nie potrafisz znaleźć.

1) powinno być __destruct nie destruct()

  1. <?php
  2. class Obrazek
  3. {
  4. private $obrazek;
  5.  
  6. function __construct ( $sciezka_pliku_jpg )
  7. {
  8. $this->obrazek = @imagecreatefromjpeg( $sciezka_pliku_jpg ) or die( "Nie mo�na zainicjowa� strumienia GD" );
  9. }
  10.  
  11. function __destruct()
  12. {
  13. imagedestroy ( $this->obrazek );
  14. }
  15.  
  16. public function resize ( $tbx , $tby )
  17. {
  18. $ow = imagesx($this->obrazek);
  19. $oh = imagesy($this->obrazek);
  20. $mid['ow'] = $tbx;
  21. $mid['oh'] = $tby;
  22.  
  23. if ( $ow > $oh and $mid['oh'] > $oh)
  24. {
  25. $mid['width'] = $mid['ow'];
  26. $mid['height'] = $oh/$ow * $mid['ow'];
  27. $mid_pot['width'] = 0;
  28. $mid_pot['height'] = ($mid['oh'] - $mid['height']) / 2;
  29. } 
  30. else
  31. {
  32. $mid['height'] = $mid['oh'];
  33. $mid['width'] = $ow/$oh * $mid['oh'];
  34. $mid_pot['height'] = 0;
  35. $mid_pot['width'] = ($mid['ow'] - $mid['width']) / 2;
  36. }
  37.  
  38. $tb = imagecreatetruecolor ( $mid['ow'], $mid['oh'] );
  39. imagecopyresized ( $tb , $this->obrazek , $mid_pot['width'],
  40. $mid_pot['height'], 0, 0,
  41. $mid['width'], $mid['height'], $ow, $oh );
  42.  
  43. return $tb;
  44. }
  45. }
  46.  
  47. header("Content-type: image/jpeg");
  48.  
  49. $obiektObrazka = new Obrazek ( "img.jpg" );
  50. imagejpeg ( $obiektObrazka->resize (160, 90) );
  51. ?>


Kod jest dobry. Tylko Ty masz stare PHP w wersji 4, do tego skryptu wymagane jest PHP w wersji >5.
Wersja PHP4:

  1. <?php
  2. class Obrazek
  3. {
  4. var $obrazek;
  5.  
  6. function Obrazek ( $sciezka_pliku_jpg )
  7. {
  8. $this->obrazek = @imagecreatefromjpeg( $sciezka_pliku_jpg ) or die( "Nie mo�na zainicjowa� strumienia GD" );
  9. }
  10.  
  11. function __destruct()
  12. {
  13. imagedestroy ( $this->obrazek );
  14. }
  15.  
  16. public function resize ( $tbx , $tby )
  17. {
  18. $ow = imagesx($this->obrazek);
  19. $oh = imagesy($this->obrazek);
  20. $mid['ow'] = $tbx;
  21. $mid['oh'] = $tby;
  22.  
  23. if ( $ow > $oh and $mid['oh'] > $oh)
  24. {
  25. $mid['width'] = $mid['ow'];
  26. $mid['height'] = $oh/$ow * $mid['ow'];
  27. $mid_pot['width'] = 0;
  28. $mid_pot['height'] = ($mid['oh'] - $mid['height']) / 2;
  29. } 
  30. else
  31. {
  32. $mid['height'] = $mid['oh'];
  33. $mid['width'] = $ow/$oh * $mid['oh'];
  34. $mid_pot['height'] = 0;
  35. $mid_pot['width'] = ($mid['ow'] - $mid['width']) / 2;
  36. }
  37.  
  38. $tb = imagecreatetruecolor ( $mid['ow'], $mid['oh'] );
  39. imagecopyresized ( $tb , $this->obrazek , $mid_pot['width'],
  40. $mid_pot['height'], 0, 0,
  41. $mid['width'], $mid['height'], $ow, $oh );
  42.  
  43. return $tb;
  44. }
  45. }
  46.  
  47. header("Content-type: image/jpeg");
  48.  
  49. $obiektObrazka = new Obrazek ( "img.jpg" );
  50. imagejpeg ( $obiektObrazka->resize (160, 90) );
  51. $obiektObrazka->__destruct();
  52. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 09:07