Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: proprocja obrazka + max h i w
Forum PHP.pl > Forum > PHP
misiek172
Witam.

Zawsze miałem problemy z matematyka dotyczącą przeliczania wymiarów obrazka,

mam obrazk i musze go tak ze skalowac aby zachowl proporcje obrazka 211 x 98 czyli 2.15, nie chodzi o to ze musi miec takie wymiary, tylko musi miec taka proporcje i nie wieksze wymiary niz 211 x 98

pozdrawiam, Lukasz.
legorek
  1. <?php
  2. /*
  3. $x,$y - wymiary obrazka do zmniejszenia
  4. $maxX, $maxY - maksymalne wymiary
  5. $newX, $newY - nowe wymiary
  6. */
  7.  
  8. if (($x > $maxX) OR ($y > $maxY)) {
  9. if ($x > $y) { // Poziomy obraz
  10. $factor = $maxX / $x;
  11. $newX = $maxX;
  12. $newY = round($y * $factor);
  13. } else { // Pionowy albo albo kwadratowy
  14. $factor = $maxY / $y;
  15. $newX = round($x * $factor);
  16. $newY = $maxY;
  17. }
  18. }
  19. ?>

Troszkę mnie załamaleś tym pytaniem.
misiek172
i tak jest zle, bo jak jest za duzy obrazek, to skaluje sie dobrze w poziome ale wysokosc wykracza poza maksymalna

dobra juz dokladnie wiem o co mi chodzi:

obrazek po skalowaniu musi miec wysokosc 98 i szerokosc 211 przy zachowaniu proporcji,

jezeli jest wiekszy to go zmiejszamy zachowujac proporcje do 98 x 211 jezeli mneijszy to zwiekszamy do 98x 211 z zachowaniem proporcji
legorek
Nie doczytałem tego warunku na proporcje. Wystarczy zmiana kilku znaków.

  1. <?php
  2. if ($x/$y >= 2.15) {
  3. $factor = $maxX / $x;
  4. $newX = $maxX;
  5. $newY = round($y * $factor);
  6. } else {
  7. $factor = $maxY / $y;
  8. $newX = round($x * $factor);
  9. $newY = $maxY;
  10. }
  11. ?>
mls
prościej i krócej chyba będzie:
  1. <?php
  2. $ratio = round(max($width / 211, $height / 98));
  3. $newWidth = $width / $ratio;
  4. $newHeight = $height / $ratio;
  5. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.