Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Pytanie] Funkcja graficza, Szukam funcji do zmiany rozmieru
Linandar
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 30.12.2004
Skąd: Mielec

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


Mam pytanie, czy istnieje jakaś gotowa funcja [jakaśfukcja(źródło_do_zmiany, rozmiar_do_jakiego_ma_być_zmieniony)] która zmniejszyłaby obrazek do danego rozmiaru z zachowaniem proporcji wymiarów czy należy to zrobić w pętelce - zmniejszać wymiary aż rozmiar będzie odpowiedni?

Ten post edytował Linandar 11.01.2005, 18:35:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Linandar
post
Post #2





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 30.12.2004
Skąd: Mielec

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


Tak właśnie myślałem... Jak pisałem w pierwszym poście, miałem cichą nadzieję, że istnieje jakaś funkcja, która to załatwi za mnie.
Dziekują wszystkim za podpowiedzi.
Oto co napisałem:
  1. <?php
  2.  
  3. $img_type = null;
  4.  
  5. function getImage($imgName)
  6. {
  7.       $ext = pathinfo($imgName);
  8.       $ext = strtolower($ext['extension']);
  9.       if($ext == 'jpg' || $ext == 'jpeg')
  10.       {
  11.             $img = imagecreatefromjpeg($imgName);
  12.             $GLOBALS['img_type'] = IMG_JPEG;
  13.       }
  14.       else if($ext == 'gif')
  15.       {
  16.             $img = imagecreatefromgif($imgName);
  17.             $GLOBALS['img_type'] = IMG_GIF;
  18.       }
  19.       else if($ext == 'png')
  20.       {
  21.             $img = imagecreatefrompng($imgName);
  22.             $GLOBALS['img_type'] = IMG_PNG;
  23.       }
  24.       else
  25.       {
  26.             $img = null;
  27.             $GLOBALS['img_type'] = null;
  28.       }
  29.       return $img;
  30. }
  31.  
  32. function saveImage($img, $name, $imgType)
  33. {
  34.       switch($imgType)
  35.       {
  36.             case IMG_JPEG:
  37.                   imagejpeg($img, $name);
  38.                   break;
  39.             case IMG_GIF:
  40.                   imagegif($img, $name);
  41.                   break;
  42.             case IMG_PNG:
  43.                   imagepng($img, $name);
  44.                   break;
  45.       }
  46.       return $weight;
  47. }
  48.  
  49. function resize($imgName, $size)
  50. {
  51.       if(!($img = getImage($imgName)))
  52.       {
  53.             echo(&#092;"Nie mogę otworzyć pliku: $imgName\");
  54.             return false;
  55.       }
  56.  
  57.       $img_w = imagesx($img);
  58.       $img_h = imagesy($img);
  59.  
  60.       $ratio = $img_w / $img_h;
  61.  
  62.       if($ratio > 1)
  63.       {
  64.             $new_img_w = $size;
  65.             $new_img_h = ($size / $ratio);
  66.       }
  67.       else
  68.       {
  69.             $new_img_w = ($size * $ratio);
  70.             $new_img_h = $size;
  71.       }
  72.  
  73.       $tempImg = imagecreatetruecolor($new_img_w, $new_img_h);
  74.       imagecopyresized($tempImg, $img, 0, 0, 0, 0, $new_img_w, $new_img_h, $img_w, $img_h);
  75.  
  76.       saveImage($tempImg, $imgName, $GLOBALS['img_type']);
  77. }
  78. /*******************************************************************/
  79. //               do celów testowych wstawiłem dane:   
  80. $fileupload_name =  'img.jpg';//- nazwa pliku załadowanego na serwer
  81.  
  82. $weight = filesize($fileupload_name);// - początkowy rozmiar pliku
  83.  
  84. $file_size_ind = 102400;// - makszymalny rozmiar pliku w B (bytes)
  85. /*******************************************************************/
  86.  
  87. $img = getImage($fileupload_name);
  88. $img_x = imagesx($img);
  89. $img_y = imagesy($img);
  90. $size = ($img_x > $img_y) ? $img_x : $img_y;
  91. $i=0;
  92. While ($weight > $file_size_ind)
  93. {
  94.       $i++;
  95.       $img = getImage($fileupload_name);
  96.       $img_x = imagesx($img);
  97.       $img_y = imagesy($img);
  98.       $size = round((($img_x > $img_y) ? $img_x : $img_y) * 0.9, 0);
  99.       resize($fileupload_name, $size);
  100.       $weight = clearstatcache(filesize($fileupload_name));
  101.       $weight = filesize($fileupload_name);
  102. }
  103.  
  104. echo (&#092;"Ilość pętli: \" . $i . \"<br>\");
  105. echo ('<center><IMG SRC=\"' . $fileupload_name . '\"><br>');
  106. echo ('Plik ma rozmiar: ' . filesize($fileupload_name) . ' B<br>');
  107. $img = getImage($fileupload_name);
  108. echo ('i wymiary: ' . imagesx($img) . 'x' . imagesy($img) . '</center>');
  109. ?>

Działa prwaidłowo ale jeśli ktoś miałby ochotę polepszyć go to proszę o komentarz.

Ten post edytował Linandar 13.01.2005, 14:07:06
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: 7.10.2025 - 17:53