Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> skalowanie pliku graficznego przy zapisie na serwer
pikornecki
post
Post #1





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

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


Witam, chciałbym zrobić galerię zdjęć, w której w momencie uploadu plików przez użytkownika na serwer od razu zostaną przeskalowane do konkretnego wymiaru, jeszcze przed ich zapisem. Czy jest jakaś funkcja, która to realizuje?
Go to the top of the page
+Quote Post
Smertius
post
Post #2





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

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


Tak jest taka funkcja (IMG:style_emoticons/default/wink.gif)


Zainteresuj się http://php.net/manual/en/book.image.php
Go to the top of the page
+Quote Post
Kazaan
post
Post #3





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 17.07.2008

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


gotowe rozwiazanie i wedlog mnie najlepsze:

  1. class SimpleImage {
  2.  
  3. var $image;
  4. var $image_type;
  5.  
  6. function load($filename) {
  7. $image_info = getimagesize($filename);
  8. $this->image_type = $image_info[2];
  9. if( $this->image_type == IMAGETYPE_JPEG ) {
  10. $this->image = imagecreatefromjpeg($filename);
  11. } elseif( $this->image_type == IMAGETYPE_GIF ) {
  12. $this->image = imagecreatefromgif($filename);
  13. } elseif( $this->image_type == IMAGETYPE_PNG ) {
  14. $this->image = imagecreatefrompng($filename);
  15. }
  16. }
  17. function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
  18. if( $image_type == IMAGETYPE_JPEG ) {
  19. imagejpeg($this->image,$filename,$compression);
  20. } elseif( $image_type == IMAGETYPE_GIF ) {
  21. imagegif($this->image,$filename);
  22. } elseif( $image_type == IMAGETYPE_PNG ) {
  23. imagepng($this->image,$filename);
  24. }
  25. if( $permissions != null) {
  26. chmod($filename,$permissions);
  27. }
  28. }
  29. function output($image_type=IMAGETYPE_JPEG) {
  30. if( $image_type == IMAGETYPE_JPEG ) {
  31. imagejpeg($this->image);
  32. } elseif( $image_type == IMAGETYPE_GIF ) {
  33. imagegif($this->image);
  34. } elseif( $image_type == IMAGETYPE_PNG ) {
  35. imagepng($this->image);
  36. }
  37. }
  38. function getWidth() {
  39. return imagesx($this->image);
  40. }
  41. function getHeight() {
  42. return imagesy($this->image);
  43. }
  44. function resizeToHeight($height) {
  45. $ratio = $height / $this->getHeight();
  46. $width = $this->getWidth() * $ratio;
  47. $this->resize($width,$height);
  48. }
  49. function resizeToWidth($width) {
  50. $ratio = $width / $this->getWidth();
  51. $height = $this->getheight() * $ratio;
  52. $this->resize($width,$height);
  53. }
  54. function scale($scale) {
  55. $width = $this->getWidth() * $scale/100;
  56. $height = $this->getheight() * $scale/100;
  57. $this->resize($width,$height);
  58. }
  59. function resize($width,$height) {
  60. $new_image = imagecreatetruecolor($width, $height);
  61. imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
  62. $this->image = $new_image;
  63. }
  64. }


przykladowe uzycie:

  1. $image = new SimpleImage();
  2. $image->load('plik_do_resize');
  3. $image->resizeToWidth(200);
  4. $image->save('nazwa_pliku.jpg');
Go to the top of the page
+Quote Post
poisonersmainds
post
Post #4





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.05.2011

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


A nie lepiej w momencie osadzania zdjęcia na stronie/galerii skalować go za pomocą CSS??

Możesz wtedy zeskalować do postaci miniatury oraz dużego zdjęcia.
Powód edycji: [thek]: Zdjęcie 2048x1532 do 320x240 też tak wyślesz? ;)
Go to the top of the page
+Quote Post
mat-bi
post
Post #5





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Nie sądzę, żeby było lepiej. Tracisz wtedy transfer, bo i tak przeglądarka wczytuje cały obraz, strona może też sie wolno ładować.

Co do autora, zainteresuj się biblioteką GD/ImageMagick
Go to the top of the page
+Quote Post
kadlub
post
Post #6





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

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


Cytat(mat-bi @ 8.05.2011, 12:57:58 ) *
Nie sądzę, żeby było lepiej. Tracisz wtedy transfer, bo i tak przeglądarka wczytuje cały obraz, strona może też sie wolno ładować.

Co do autora, zainteresuj się biblioteką GD/ImageMagick

zgadza się jak by użytkownik wszedł na taką stronę gdzie ma kilka naście takich miniaturek to by sie naczekał na ich załadowanie i mogę się założyć że by stracił cierpliwość i nie czekał
Go to the top of the page
+Quote Post
woytecki
post
Post #7





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 9.05.2011

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


Ja korzystam z klasy PhpThumb i bardzo sobie chwalę:
http://phpthumb.sourceforge.net
Go to the top of the page
+Quote Post

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: 16.09.2025 - 08:48