Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> Miniaturka JPEG/GIF/PNG, [funkcja] php 4 i 5, gd2
tiraeth
post 11.01.2005, 20:05:53
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


  1. <?php
  2. function resizeImage($source, $max_x, $max_y, $save_image, $jpeg_quality = 100)
  3. {
  4.  /*
  5. * source - obrazek jpeg
  6. * max_x - maksymalna szerokosc pomniejszonego obrazka
  7. * max_y - maksymalna dlugosc pomniejszonego obrazka
  8. * save_image - nazwa pliku do ktorego zostanie zapisany nowy obrazek
  9. * jpeg_quality - jakosc powstalego obrazu jpeg - jezeli bedzie inny to argument jest nie wazny (domyslnie 100)
  10. */
  11.  
  12. if(exif_imagetype($source) == IMAGETYPE_JPEG)
  13. {
  14.  $img_src = imagecreatefromjpeg($source);
  15. }
  16. elseif(exif_imagetype($source) == IMAGETYPE_GIF)
  17. {
  18.  $img_src = imagecreatefromgif($source);
  19. }
  20. elseif(exif_imagetype($source) == IMAGETYPE_PNG)
  21. {
  22.  $img_src = imagecreatefrompng($source);
  23. }
  24. else
  25. {
  26.  die('Wrong filetype! Accepted images: JPG/JPEG, GIF, PNG');
  27. }
  28.  
  29.  $image_x = imagesx($img_src);
  30.  $image_y = imagesy($img_src);
  31.  if($image_x > $image_y) // Landscape
  32.  {
  33. $ratio_x = ($image_x > $max_x) ? $max_x/$image_x : 1;
  34. $ratio_y = $ratio_x;
  35. $move = 'y';
  36.  }
  37.  else // Portrait
  38.  {
  39. $ratio_y = ($image_y > $max_y) ? $max_y/$image_y : 1;
  40. $ratio_x = $ratio_y;
  41. $move = 'x';
  42.  }
  43. $new_x = $image_x*$ratio_x;
  44. $new_y = $image_y*$ratio_y;
  45.  
  46. $move_x = ($move == &#092;"x\") ? ($max_x-$new_x)/2 : 0;
  47. $move_y = ($move == &#092;"y\") ? ($max_y-$new_y)/2 : 0;
  48.  
  49. $new_img = imagecreatetruecolor($max_x, $max_y);
  50. $background = imagecolorallocate($new_img, 255, 255, 255);
  51. imagefill($new_img, 0, 0, $background);
  52. imagecopyresampled($new_img, $img_src, $move_x, $move_y, 0, 0, $new_x, $new_y, $image_x, $image_y);
  53.  
  54. if(exif_imagetype($save_image) == IMAGETYPE_JPEG)
  55. {
  56.  imagejpeg($new_img, $save_image, $jpeg_quality);
  57. }
  58. elseif(exif_imagetype($save_image) == IMAGETYPE_GIF)
  59. {
  60.  imagegif($new_img, $save_image);
  61. }
  62. elseif(exif_imagetype($save_image) == IMAGETYPE_PNG)
  63. {
  64.  imagepng($new_img, $save_image);
  65. }
  66.  
  67.  echo '<img src=\"'.$save_image.'\" border=\"1\">';
  68. }
  69. ?>


użycie:
  1. <?
  2. resizeImage('obrazek_duzy.jpg', MAX_WYMIAR_X, MAX_WYMIAR_Y, 'obrazek_maly_nowy.jpg', JAKOSC_JPEG); // (5 parametr opcjonalnie dla jpg)
  3. ?>


Funkcja jest w stanie utworzyć miniaturkę z każdego obrazka jpg/jpeg, gif oraz png...
Go to the top of the page
+Quote Post
son
post 23.01.2005, 20:09:00
Post #2





Grupa: Zarejestrowani
Postów: 210
Pomógł: 0
Dołączył: 31.01.2004
Skąd: Kraków

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


Sooper skrypt właśnie tego szukałem thumbsupsmileyanim.gif
Dzięki Tiraeth naprawdę bardzo mi pomogłeś exclamation.gif
Polecam wszystkim biggrin.gif biggrin.gif biggrin.gif

Ten post edytował son 23.01.2005, 20:09:18


--------------------
Warsztat: Apache 1.3.36 | MySQL 4.1.19 | php 5.1.4 | OS Linux SUSE 10.3 x86_64 | Kernel 2.6.22.12-0.1 | Opera 9.5 | Kate
Na warsztacie: Ekartki
Go to the top of the page
+Quote Post
Toom
post 14.02.2005, 11:20:51
Post #3





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 26.08.2004

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


Jak to się ma do obsługi GIFów w GD2, bo słyszałem, że tam jej nie ma?
Czy ktoś testował funkcję pod tym kontem?
Go to the top of the page
+Quote Post
tiraeth
post 14.02.2005, 13:02:55
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


GD2 obsługuję GIFy.... testowałem pod kątem gifów na GD2/PHP5/APACHE2 i działało..
Go to the top of the page
+Quote Post
Kocurro
post 14.02.2005, 13:05:40
Post #5





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

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


Celeme wyjaśnienia.

GD nie posiadało obsługi GIF'ów ze względów prawa patentowego. Jednakze prawo patentu zakończyło się w listopadzie zeszłego roku. I teraz w GD jest obsługa GIF'a, a nawet animowanego GIF'a. Niestety port na php nie posiada jeszcze wszystkich funkcji zaimplementowanych w standardzie - ale możliwe, że szybko dodadzą.

W każdym bądź razie w GD najnowszym jest pełna obsługa GIF'ów, z wyjatkiem animacji, która chwilowo nie jest dostępna pod php - ale już pracuje nad własną klasą do obsługi animacji, która poszerzy możliwości GD
Go to the top of the page
+Quote Post
Toom
post 14.02.2005, 13:19:00
Post #6





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 26.08.2004

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


Dowiedziałem się nawet że w 1.6 Zakończono obsługę GIF, żeby przywrócić w 2.0.28

Problem w tym, że na localhoscie (win - easyPHP1.7) mam wersję 2.0.18. Więc pytanie: Jak zainstalować nowszą? najprostsze metody mile widziane smile.gif
---------
Tymczasowo zrobiłem tak: wrzuciłem do katalogu php nową wersję php 4.3.10 z php.net.
Tylko czemu wyświetla, w gd_info:
Kod
{ ["GD Version"]=> string(27) "bundled (2.0.15 compatible)" ["FreeType Support"]=> bool(true) ["FreeType Linkage"]=> string(13) "with freetype" ["T1Lib Support"]=> bool(false) ["GIF Read Support"]=> bool(true) ["GIF Create Support"]=> bool(false) ["JPG Support"]=> bool(true) ["PNG Support"]=> bool(true) ["WBMP Support"]=> bool(true) ["XBM Support"]=> bool(true) ["JIS-mapped Japanese Font Support"]=> bool(false) }  
Wynika z tego, że nie ma tu GIF Create Support
czy on tak zawsze?

Ten post edytował Toom 14.02.2005, 13:34:01
Go to the top of the page
+Quote Post
Kocurro
post 14.02.2005, 18:54:41
Post #7





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

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


php jest strasznie w plecy jeśli chodzi o GD :/

musisz zainstalować sobie patcha udostępniajacego GIFy.

a zanim php obsługży w pełni i prawidłowo najnowsze GD to jeszcze poczekamy...a tak chciałbym juz teraz animowane gify robić...ehh...
Go to the top of the page
+Quote Post
Toom
post 15.02.2005, 14:33:42
Post #8





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 26.08.2004

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


Dzięki za info smile.gif

Możesz rozwinąć kwestię patcha (skąd i jak?), bo jestem mało wprawiony w instalacjach php z apachem :/

Poza tym, znajomy Admin pisał mi, że na jego serwerze linux jest wersja 2.0.31, w planie 33, wraz z php 4.3.10, ale jeszcze testuje.
Więc chyba się da winksmiley.jpg

Jeśli chodzi o gify, nie zależy mi na animacjach jedynie, żeby można było robić miniaturki gifów.
Go to the top of the page
+Quote Post
pys1986
post 2.03.2005, 12:38:43
Post #9





Grupa: Zarejestrowani
Postów: 233
Pomógł: 0
Dołączył: 18.01.2005

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


A mi to niedziala nic sie niewyswietla i nietworzy sie zaden plik O CO CHODZI questionmark.gif?
Go to the top of the page
+Quote Post
tiraeth
post 2.03.2005, 15:24:10
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


A może napiszesz co dokładnie nie działa?
Go to the top of the page
+Quote Post
pys1986
post 2.03.2005, 20:21:10
Post #11





Grupa: Zarejestrowani
Postów: 233
Pomógł: 0
Dołączył: 18.01.2005

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


po prostu nic sie niewyswitla ani nie tworzy mi zadnego pliku, wywoluje funkcje w ten sposob i nic

  1. <?php
  2. resizeImage('1.jpg', 100, 100, '2.jpg', 5); 
  3. ?>


Oczywiscie wczesniej pisze cala funkcje exclamation.gif!

Ten post edytował pys1986 2.03.2005, 20:21:57
Go to the top of the page
+Quote Post
miedzna
post 4.03.2005, 12:39:22
Post #12





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


mi wywala :

Fatal error: Call to undefined function: exif_imagetype()

co robić?
Go to the top of the page
+Quote Post
kicaj
post 4.03.2005, 16:08:27
Post #13





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Cytat(miedzna @ 2005-03-04 13:39:22)
Fatal error: Call to undefined function: exif_imagetype()

--enable--exif


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
tiraeth
post 24.03.2005, 12:47:33
Post #14





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


NOWY KOD KTÓRY NIE WYMAGA EXIF:

  1. <?php
  2. function imgType($name)
  3. {
  4.  if(substr($name, -4, 4) == '.jpg' || substr($name, -4, 4) == 'jpeg')
  5.  {
  6. return &#092;"IMAGETYPE_JPEG\";
  7.  }
  8.  elseif(substr($name, -4, 4) == '.gif')
  9.  {
  10. return &#092;"IMAGETYPE_GIF\";
  11.  }
  12.  elseif(substr($name, -4, 4) == '.png')
  13.  {
  14. return &#092;"IMAGETYPE_PNG\";
  15.  }
  16. }
  17.  
  18. function resizeImage($source, $max_x, $max_y, $save_image, $jpeg_quality = 100)
  19. {
  20.  /*
  21. * source - obrazek jpeg
  22. * max_x - maksymalna szerokosc pomniejszonego obrazka
  23. * max_y - maksymalna dlugosc pomniejszonego obrazka
  24. * save_image - nazwa pliku do ktorego zostanie zapisany nowy obrazek
  25. * jpeg_quality - jakosc powstalego obrazu jpeg - jezeli bedzie inny to argument jest nie wazny (domyslnie 100)
  26. */
  27.  
  28. if(imgType($source) == &#092;"IMAGETYPE_JPEG\")
  29. {
  30.  $img_src = imagecreatefromjpeg($source);
  31. }
  32. elseif(imgType($source) == &#092;"IMAGETYPE_GIF\")
  33. {
  34.  $img_src = imagecreatefromgif($source);
  35. }
  36. elseif(imgType($source) == &#092;"IMAGETYPE_PNG\")
  37. {
  38.  $img_src = imagecreatefrompng($source);
  39. }
  40. else
  41. {
  42.  die('Wrong filetype! Accepted images: JPG/JPEG, GIF, PNG');
  43. }
  44.  
  45.  $image_x = imagesx($img_src);
  46.  $image_y = imagesy($img_src);
  47.  if($image_x > $image_y) // Landscape
  48.  {
  49. $ratio_x = ($image_x > $max_x) ? $max_x/$image_x : 1;
  50. $ratio_y = $ratio_x;
  51. $move = 'y';
  52.  }
  53.  else // Portrait
  54.  {
  55. $ratio_y = ($image_y > $max_y) ? $max_y/$image_y : 1;
  56. $ratio_x = $ratio_y;
  57. $move = 'x';
  58.  }
  59. $new_x = $image_x*$ratio_x;
  60. $new_y = $image_y*$ratio_y;
  61.  
  62. $move_x = ($move == &#092;"x\") ? ($max_x-$new_x)/2 : 0;
  63. $move_y = ($move == &#092;"y\") ? ($max_y-$new_y)/2 : 0;
  64.  
  65. $new_img = imagecreatetruecolor($max_x, $max_y);
  66. $background = imagecolorallocate($new_img, 255, 255, 255);
  67. imagefill($new_img, 0, 0, $background);
  68. imagecopyresampled($new_img, $img_src, $move_x, $move_y, 0, 0, $new_x, $new_y, $image_x, $image_y);
  69.  
  70. if(imgType($save_image) == &#092;"IMAGETYPE_JPEG\")
  71. {
  72.  imagejpeg($new_img, $save_image, 100);
  73. }
  74. elseif(imgType($save_image) == &#092;"IMAGETYPE_GIF\")
  75. {
  76.  imagegif($new_img, $save_image);
  77. }
  78. elseif(imgType($save_image) == &#092;"IMAGETYPE_PNG\")
  79. {
  80.  imagepng($new_img, $save_image);
  81. }
  82.  
  83.  echo '<img src=\"'.$save_image.'\" border=\"1\">';
  84. }
  85. ?>
Go to the top of the page
+Quote Post
darkspirit
post 24.03.2005, 13:18:44
Post #15





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 13.08.2004
Skąd: Łódź

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


no tak ale teraz w sumie można łatwo złapać błąd jak obrazek ma nazwę hello.jpg, a jest typu *.gif, nie można by naprzykład zastosować: getimagesize()?

paps


--------------------
Apache 1.3.31 PHP 4.3.10 && 5.0.3 Go to the top of the page
+Quote Post
webtg
post 8.04.2005, 18:11:33
Post #16





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 28.12.2004
Skąd: Tarnowskie Góry

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


Skrypcik fajny, ale przy wielkich rozdzielczościach nie działa exclamation.gif
W czym może być problem ?
Go to the top of the page
+Quote Post
maker
post 8.04.2005, 19:57:54
Post #17





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 17.09.2004

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


max_execution_time lub memory_limit

potrzebna pamiec jak dobrze pamietam oblicza sie wzorem

((szerokosc x wysokosc x 3)/1024)/1024 dry.gif

Ten post edytował maker 8.04.2005, 20:00:49


--------------------
My Webpage
Go to the top of the page
+Quote Post
webtg
post 8.04.2005, 20:06:45
Post #18





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 28.12.2004
Skąd: Tarnowskie Góry

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


To mam gdzies zadeklarować w skrypcie czy zmienić w php.ini ?
Go to the top of the page
+Quote Post
Bakus
post 11.04.2005, 00:16:20
Post #19


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

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


Wszystko jest napisane tu:

max_execution_time - http://php.idn.net.pl/ini-set

memory_limit - http://php.idn.net.pl/set-time-limit


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
webtg
post 11.04.2005, 00:25:12
Post #20





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 28.12.2004
Skąd: Tarnowskie Góry

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


Dzięki dzięki,

poprostu nie mam wglądu w php.ini, ale admin wszystko pozmieniał i jest OK

Ale taki temat może się komuś przydać, o ile skorzysta z wyszukiwarki
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
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 Wersja Lo-Fi Aktualny czas: 28.04.2024 - 08:45