Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> proprocja obrazka + max h i w
misiek172
post
Post #1





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

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


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.


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
legorek
post
Post #2





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

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


  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.

Ten post edytował legorek 3.07.2008, 08:32:05


--------------------
Go to the top of the page
+Quote Post
misiek172
post
Post #3





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

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


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


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post
legorek
post
Post #4





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

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


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. ?>


Ten post edytował legorek 4.07.2008, 11:46:14


--------------------
Go to the top of the page
+Quote Post
mls
post
Post #5





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


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. ?>


Ten post edytował mls 4.07.2008, 13:08:42


--------------------
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 Aktualny czas: 19.08.2025 - 15:03