Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skalowanie w GD
NuLL
post
Post #1





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Witam,

Przez moje ręce przeszedł projekt w którym było potrzebne skalowanie obrazkow.
Do skalowania napisałem coś takiego
  1. <?php
  2.  
  3. function create_thumb_wfixed($file_name_src, $file_name_dest, $weight,$quality=100)
  4. {
  5.  if (file_exists($file_name_src) && isset($file_name_dest))
  6.  {
  7.  $est_src = pathinfo(strtolower($file_name_src));
  8.  $est_dest = pathinfo(strtolower($file_name_dest));
  9.  $size = getimagesize($file_name_src);
  10.  $w = number_format($weight, 0, ',', '');
  11.  $h = number_format(($size[1]/$size[0])*$weight,0,',','');
  12.  
  13.  if ($est_dest['extension'] == &#092;"gif\" || $est_dest['extension'] == \"jpg\")
  14.  {
  15.  $file_name_dest = substr_replace($file_name_dest, 'jpg', -3);
  16.  $dest = imagecreatetruecolor($w, $h);
  17.  //imageantialias($dest, TRUE);
  18.  } elseif ($est_dest['extension'] == &#092;"png\")
  19.  {
  20.  $dest = imagecreatetruecolor($w, $h);
  21.  //imageantialias($dest, TRUE);
  22.  } else
  23.  {
  24. return FALSE;
  25.  }
  26.  
  27.  switch($size[2])
  28.  {
  29.  case 1:  //GIF
  30.  $src = imagecreatefromgif($file_name_src);
  31.  break;
  32.  case 2:  //JPEG
  33.  $src = imagecreatefromjpeg($file_name_src);
  34.  break;
  35.  case 3:  //PNG
  36.  $src = imagecreatefrompng($file_name_src);
  37.  break;
  38.  default:
  39.  return FALSE;
  40.  break;
  41.  }
  42.  imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);
  43.  
  44.  switch($size[2])
  45.  {
  46.  case 1:
  47.  case 2:
  48.  imagejpeg($dest,$file_name_dest, $quality);
  49.  break;
  50.  case 3:
  51.  imagepng($dest,$file_name_dest);
  52.  }
  53.  return TRUE;
  54.  }
  55.  return FALSE;
  56. }
  57.  
  58. ?>

Ta funkcja jak łatwo się domyślic ta funkcja skaluje obrazki na zadana szerokość dopasowując wysokość obrazka. I działa niby ok - ale czemu plik o rozmiarach 500x375 ma rozmiar około 130 kB :?:
Czy GD jest aż tak ułomne czy to ja coś zrobiłem nie tak :?:
Myślę, że to może to drugie tongue.gif ale nie wiem mam pojęcia co sad.gif


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
FiDO
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Jaki plik ma tyle? png czy jpg? Jesli png to moze obrazek sie nie nadaje do png (png ma podobne zastosowanie jak gif, czyli jakies fotki itp wychodza mu z monstrualnymi rozmiarami), a jesli jpg to moze wina quality na 100? Nie piszesz z jakiej korzystasz, wiec moge zakladac, ze korzystasz z domyslnosci ostatniego parametru smile.gif
Najlepiej daj jakiegos sampla, ktory Ci sie robi taki strasznie duzy, wtedy mozna bedzie powiedziec cos wiecej.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
NuLL
post
Post #3





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Dzięki FiDO - jesteś wielki Rkingsmiley.png

Generuję JPG-i oczywiście.

Problem jest właśnie w jakości - jak ustawie jakość na 75 zamiast 100 to obrazek ma automatycznie około 35 kB a nie 4x razy więcej smile.gif


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
FiDO
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Tylko nie przesadz w druga strone smile.gif 100 dla jpg to jest marnotrastwo miejsca, ale jak dasz za malo to beda bardziej widoczne artefakty jpga.. trzeba sobie dobrac doswiadczalnie jakosc, do wiekszosci jednak te 75 spokojnie starcza.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
NuLL
post
Post #5





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Zostawiłem 75 - obrazek ma w większości rozmiar 100xcos_tam tak więc jakość nie przeszkadza.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 11:41