Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] imagecopyresampled
fernet
post 10.11.2011, 01:18:10
Post #1





Grupa: Zarejestrowani
Postów: 91
Pomógł: 1
Dołączył: 22.03.2007

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


Witam,

Popełniłem skrypt który ma za zadanie dopasować ładowane zdjęcie do odpowiedniej rozdzielczości. W pierwszej fazie leci skalowanie z zachowaniem proporcji wysokość/szerokość a później jeśli coś po katach wystaje leci kadrowanie z pozycji x czy tez y o przypadkowej mniejszej wartości roznicy. W wiekszosci przypadkow skrypt dzala jednak jest gdzes jest blad i nie moge go znalesc a objawia sie tym ze czasem zdjecia w swojej dolnej czesci sa sciete o jakas przypadkowa wysokosc.


  1. $pic = @imagecreatefrompng($id_thumb);
  2. $mega = $mega_path;
  3. $width = imagesx($pic);
  4. $height = imagesy($pic);
  5. $cat_x = 0;
  6. $cat_y = 0;
  7.  
  8.  
  9. if($height == $width) {
  10. $Twidth = 330;
  11. $Theight = $Twidth * $height / $width;
  12. $Theight = ceil($Theight);
  13. $cat_y = rand(0,$Theight-286);
  14. } else {
  15. if($height < $width) {
  16. $Theight = 286;
  17. $Twidth = $Theight * $width / $height;
  18. $Twidth = ceil($Twidth);
  19. if($Twidth < 330) {
  20. $Twidth = 330;
  21. $Theight = $Twidth * $height / $width;
  22. $Theight = ceil($Theight);
  23. } else {
  24. $cat_x = rand(0,$Twidth-330);
  25. }
  26. } else {
  27. $Twidth = 330;
  28. $Theight = $Twidth * $height / $width;
  29. $Theight = ceil($Theight);
  30. if($Theight < 286) {
  31. $Theight = 286;
  32. $Twidth = $Theight * $width / $height;
  33. $Twidth = ceil($Twidth);
  34. } else {
  35. $cat_y = rand(0,$Theight-286);
  36. }
  37. }
  38. }
  39. $thumb = @imagecreatetruecolor (330, 286);
  40. imagealphablending($thumb, false);
  41. imagesavealpha($thumb,true);
  42. $transparent = imagecolorallocatealpha($thumb, 255, 255, 255, 127);
  43. imagefilledrectangle($thumb, 0, 0, $Twidth, $Theight, $transparent);
  44. imagecopyresampled($thumb, $pic, 0, 0, $cat_x, $cat_y, $Twidth, $Theight, $width, $height);
  45. imagepng($thumb,$mega);
  46. imagedestroy($thumb);
  47. unlink($target_path);
  48.  



Za pomoc i zainteresowaie z gory dziekuje i pozdrawiam

Ten post edytował fernet 10.11.2011, 01:20:16


--------------------
Czy sprzedal sie juz czy dopiero ma? Oto pytanie, ktore stawiam wam. A czemu gdy byl, to nic tylko spal? Ze mna co lubie go gadac nic nie chcial. A czemu to gra, a tamtego nie. Chyba nas wszystkich nic nie szanuje. Jaki byl kiedy pil? Jaki byl kiedy gral? Czy to ten czlowiek sam czy moze rozni dwaj?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Uriziel01
post 10.11.2011, 09:29:02
Post #2





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


Ja jestem tylko ciekaw czy wiesz że jesteś pewnie już dziesięcio tysięczną osobą na świecie która 'popełniła' właśnie taki kod (tzn. rozwiązujący ten problem), nie rozumiem dlaczego wszyscy piszą to na własną rękę ? Z całym szacunkiem tutaj masz przykładową klasę realizującą dokładnie te zadanie, użyj jej tak jak jest, lub jeżeli już naprawde nie możesz się oderwać od programowania strukturalnego no to skorzystaj z samej zawartości tych metod i przepisz je do swojego kodu:
  1. class SimpleImage {
  2.  
  3. var $image;
  4. var $image_type;
  5.  
  6. function load($filename) {
  7.  
  8. $image_info = getimagesize($filename);
  9. $this->image_type = $image_info[2];
  10. if( $this->image_type == IMAGETYPE_JPEG ) {
  11.  
  12. $this->image = imagecreatefromjpeg($filename);
  13. } elseif( $this->image_type == IMAGETYPE_GIF ) {
  14.  
  15. $this->image = imagecreatefromgif($filename);
  16. } elseif( $this->image_type == IMAGETYPE_PNG ) {
  17.  
  18. $this->image = imagecreatefrompng($filename);
  19. }
  20. }
  21. function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
  22.  
  23. if( $image_type == IMAGETYPE_JPEG ) {
  24. imagejpeg($this->image,$filename,$compression);
  25. } elseif( $image_type == IMAGETYPE_GIF ) {
  26.  
  27. imagegif($this->image,$filename);
  28. } elseif( $image_type == IMAGETYPE_PNG ) {
  29.  
  30. imagepng($this->image,$filename);
  31. }
  32. if( $permissions != null) {
  33.  
  34. chmod($filename,$permissions);
  35. }
  36. }
  37. function output($image_type=IMAGETYPE_JPEG) {
  38.  
  39. if( $image_type == IMAGETYPE_JPEG ) {
  40. imagejpeg($this->image);
  41. } elseif( $image_type == IMAGETYPE_GIF ) {
  42.  
  43. imagegif($this->image);
  44. } elseif( $image_type == IMAGETYPE_PNG ) {
  45.  
  46. imagepng($this->image);
  47. }
  48. }
  49. function getWidth() {
  50.  
  51. return imagesx($this->image);
  52. }
  53. function getHeight() {
  54.  
  55. return imagesy($this->image);
  56. }
  57. function resizeToHeight($height) {
  58.  
  59. $ratio = $height / $this->getHeight();
  60. $width = $this->getWidth() * $ratio;
  61. $this->resize($width,$height);
  62. }
  63.  
  64. function resizeToWidth($width) {
  65. $ratio = $width / $this->getWidth();
  66. $height = $this->getheight() * $ratio;
  67. $this->resize($width,$height);
  68. }
  69.  
  70. function scale($scale) {
  71. $width = $this->getWidth() * $scale/100;
  72. $height = $this->getheight() * $scale/100;
  73. $this->resize($width,$height);
  74. }
  75.  
  76. function resize($width,$height) {
  77. $new_image = imagecreatetruecolor($width, $height);
  78. imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
  79. $this->image = $new_image;
  80. }
  81.  
  82. }


Ten post edytował Uriziel01 10.11.2011, 09:29:45
Go to the top of the page
+Quote Post
fernet
post 10.11.2011, 19:23:34
Post #3





Grupa: Zarejestrowani
Postów: 91
Pomógł: 1
Dołączył: 22.03.2007

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


Ja po prostu wole vi na rzecz innych dyrdymałów a co do programowania obiektowego to absolutnie masz racje i teraz niestety muszę mój panel administracyjny zmienić z quake'a na Battlefield'a 3 - nie "opóźniaj towarzyszy" itd...

Pozdrawiam

Ten post edytował fernet 10.11.2011, 19:26:30


--------------------
Czy sprzedal sie juz czy dopiero ma? Oto pytanie, ktore stawiam wam. A czemu gdy byl, to nic tylko spal? Ze mna co lubie go gadac nic nie chcial. A czemu to gra, a tamtego nie. Chyba nas wszystkich nic nie szanuje. Jaki byl kiedy pil? Jaki byl kiedy gral? Czy to ten czlowiek sam czy moze rozni dwaj?
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 Wersja Lo-Fi Aktualny czas: 29.06.2025 - 09:13