Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> GD- zmiana zdjec pionowych na poziome, wyciecie srodka
swmikolaj21
post 27.04.2006, 12:05:47
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 11.05.2005

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


Witam!

Chcialbym aby miniaturki zdjec zawsze byly w formacie poziomym (szerok>wysokosc). A jezeli ktos laduje na moj serwis pionowe zdjecie, to chcialbym zeby tworzyla sie miniaturka pozioma na zasadzie wyciecia srodka zdjecia (czyli tzw przyciecie).

Probowalem samemu taka funkcje znalezc ale sie nie udalo....

Ktos ma jakies sugestie lub porady? Bede wdzieczny...
Go to the top of the page
+Quote Post
Vogel
post 27.04.2006, 12:32:09
Post #2





Grupa: Zarejestrowani
Postów: 402
Pomógł: 0
Dołączył: 20.01.2003

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


spróbuj napisać sam ;]

zalozmy ze masz zdjecie (szer1, wys1) i miniaturke (szer2, wys2). zmniejsz fotke by nowa_szerokosc = szer2 a nowa_wysokosc = szer1/wys1*szer2. i teraz jesli nowa_wysokosc > wys2 to przycinasz ja (nowa_wysokosc = wys2). pozosytało jedynie wysrodkowac i zresamplowac. proste ;]


--------------------
Go to the top of the page
+Quote Post
swmikolaj21
post 27.04.2006, 13:04:51
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 11.05.2005

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


Cytat(Vogel @ 2006-04-27 11:32:09)
jesli nowa_wysokosc > wys2 to przycinasz ja (nowa_wysokosc = wys2). pozosytało jedynie wysrodkowac i zresamplowac. proste ;]


Drogi Voglu: ja juz jestem na etapie stworzenia miniaturki, ale problemem jest to, co dla Ciebie jest chyba oczywistoscia, bo jak wezme nowa wysokosc=wys2 to znieksztalci zdjecia a nie przytnie...

Problemem jest wlasnie wysrodkowanie i zresamplowanie....
Go to the top of the page
+Quote Post
Vogel
post 27.04.2006, 13:37:08
Post #4





Grupa: Zarejestrowani
Postów: 402
Pomógł: 0
Dołączył: 20.01.2003

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


  1. <?php
  2. function zmniejsz_foto($plik, $dx, $dy, $sciezka, $compression=75, $mode='proportional') {
  3.  
  4. $tmp = getimagesize($plik);
  5. switch ($tmp[2]) {
  6. case 1:
  7. $img_src = imagecreatefromgif($plik);
  8. break;
  9. case 2:
  10. $img_src = imagecreatefromjpeg($plik);
  11. break;
  12. case 3:
  13. $img_src = imagecreatefrompng($plik);
  14. break;
  15. case 6:
  16. $img_src = imagecreatefrombmp($plik);
  17. break;
  18. }
  19.  
  20.  
  21. $sx = $tmp[0];
  22. $sy = $tmp[1];
  23.  
  24. if ($mode == 'proportional') {
  25. if ($sx > $dx || $sy > $dy) {
  26. if ($dx/$dy > $sx/$sy) {
  27. $newX = $dy/$sy*$sx;
  28. $newY = $dy;
  29. }
  30. else {
  31. $newX = $dx;
  32. $newY = $dx/$sx*$sy;
  33. }
  34. $dx = $newX;
  35. $dy = $newY;
  36. }
  37. else {
  38. $dx = $newX = $sx;
  39. $dy = $newY = $sy;
  40. }
  41. $offY = $offX = 0;
  42. $cutY = $cutX = 0;
  43. }
  44. elseif ($mode == 'stretch') {
  45. if ($dx/$dy > $sx/$sy) {
  46. $newX = $dy/$sy*$sx;
  47. $newY = $dy;
  48. $offX = ($dx - $newX)/2;
  49. $offY = 0;
  50. }
  51. elseif ($dx/$dy < $sx/$sy) {
  52. $newX = $dx;
  53. $newY = $dx/$sx*$sy;
  54. $offX = 0;
  55. $offY = ($dy - $newY)/2;
  56. }
  57. else {
  58. $newX = $dx;
  59. $newY = $dy;
  60. $offX = 0;
  61. $offY = 0;
  62. }
  63. $cutY = $cutX = 0;
  64. }
  65. elseif ($mode == 'center') {
  66. if ($sx > $dx || $sy > $dy) {
  67. if ($dx/$dy > $sx/$sy) {
  68. $newX = $dy/$sy*$sx;
  69. $newY = $dy;
  70. $offX = ($dx - $newX)/2;
  71. $offY = 0;
  72. }
  73. elseif ($dx/$dy < $sx/$sy) {
  74. $newX = $dx;
  75. $newY = $dx/$sx*$sy;
  76. $offX = 0;
  77. $offY = ($dy - $newY)/2;
  78. }
  79. else {
  80. $newX = $dx;
  81. $newY = $dy;
  82. $offX = 0;
  83. $offY = 0;
  84. }
  85. }
  86. else {
  87. $newX = $sx;
  88. $newY = $sy;
  89. $offX = ($dx-$sx)/2;
  90. $offY = ($dy-$sy)/2;
  91. }
  92. $cutY = $cutX = 0;
  93. }
  94. elseif ($mode == 'cut') {
  95. if ($sx > $dx || $sy > $dy) {
  96. if ($dx/$dy < $sx/$sy) {
  97. $newX = $dy/$sy*$sx;
  98. $newY = $dy;
  99. $offX = ($dx - $newX)/2;
  100. $offY = 0;
  101. }
  102. elseif ($dx/$dy > $sx/$sy) {
  103. $newX = $dx;
  104. $newY = $dx/$sx*$sy;
  105. $offX = 0;
  106. $offY = ($dy - $newY)/2;
  107. }
  108. else {
  109. $newX = $dx;
  110. $newY = $dy;
  111. $offX = 0;
  112. $offY = 0;
  113. }
  114. }
  115. else {
  116. $newX = $sx;
  117. $newY = $sy;
  118. $offX = ($dx-$sx)/2;
  119. $offY = ($dy-$sy)/2;
  120. }
  121. $cutY = $cutX = 0;
  122. }
  123.  
  124. $img_dst = imagecreatetruecolor($dx,$dy);
  125. $white = imagecolorallocate($img_dst, 0, 0, 0);
  126. imagefill($img_dst, 0, 0, $white);
  127.  
  128. imagecopyresampled($img_dst, $img_src, $offX, $offY, $cutX, $cutY, $newX, $newY, $sx, $sy);
  129. imagejpeg($img_dst,$sciezka,$compression);
  130.  
  131. /*header('Content-type: image/jpeg');
  132. imagejpeg($img_dst);*/
  133.  
  134. imagedestroy($img_src);
  135. imagedestroy($img_dst);
  136.  
  137. }
  138. ?>



wygrzebałem gdzieś takiego staruszka. pobaw się. pozmieniaj i zobacz - powinienes juz latwo i szybko dojsc jak zrobic co chcesz ;]


--------------------
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: 18.07.2025 - 00:55