Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] PhpThumb, stała szerokość obrazka w HTML a zmienna wysokosc
Forum PHP.pl > Forum > Przedszkole
rasten
Witam,

chciałbym, żeby obrazek wyświetlany był ze stała szerokością natomiast jego wysokość była zmienna, ale z pewną maksymalną możliwą wartością. Korzystam z phpthumb'a i narazie mam coś takiego:
  1. <img id="zdjecie" src="libs/phpthumb/phpThumb.php?src=../../../zdjecia/zdjecie1.jpg&w=200&h=jakas_max_wartosc" width="200" border="0" alt="" />

Niestety to nie działa, ponieważ jeśli mam węższy obrazek niż 200 i jednocześnie bardzo wysoki to parametr width="200" i tak sprawi, że przeglądarka sama sobie go przeskaluje w wyniku czego otrzymam wysokość większą niż chce. Jak to można rozwiązać? Wiem, że mogłbym uzyć, np. funkcji getimagesize czy jakoś tak, ale problem w tym, że wartość src obrazka jest ustawiana w js|jquery.
zordon
bardzo prosto możesz sobie proporcjonalnie WYŚWIETLAĆ obrazek w html modyfikując go w js:

  1. <script type="text/javascript">
  2. function podmien(id){
  3. var h = id.height;
  4. var w = id.width;
  5. id.width = 200;
  6. id.height = 200*h/w;
  7. }
  8.  
  9. </head>
  10.  
  11. <body >
  12.  
  13. <img src="wisla.jpg" onload="podmien(this);"/>
  14.  
  15. </body>
  16.  
  17. </html>


Oczywiście jeśli obrazek jest duży może być to problem więc najlepiej resizować sobie go (podobnym algorytmem) w php za pomocą GD
rasten
niestety nie działa, po wywolaniu
  1. alert(id.height);
wyskakuje jakas dziwna wysokosc nie majaca nic wspolnego z obrazkiem.
Jak wywale ostania linijkę ze skryptu js
  1. id.height = 200*(h/w);
to alert pokazuje dobrą wysokosc obrazka. Oczywiście alert umieszczam przed ustawieniem id.height. O co chodzi...?
zordon
w tagu <img src="wisla.jpg" onload="podmien(this);"/> nie może być parametru height i width podanego, wtedy alert(id.height) powinno pokazać Ci rzeczywistą, fizyczną wysokość obrazka źródłowego (czyli to, co pokaże Ci windows jak klikniesz prawym przyciskiem myszy i wybierzesz właściwości na pliku obrazka, który chcesz załączyć.
Następnie ustawiasz na sztywno szerokość na 200, a linijka id.height = 200*(h/w); oblicza PROPORCJONALNĄ wysokość, jaka ma zostać nadana obrazkowi. Jeśli dałbyś obrazkowi o wymiarach 400x100 na sztywno wymiary 200x200 (powiedzmy) to zostałby on rozciągnięty nieproporcjonalnie. Jeśli zaś użyjesz mojego skryptu, Przeglądarka wyświetli Ci proporcjonalny, mniejszy obrazek o rozmiarach 200x50.

U mnie skrypt działa, jeśli u Ciebie są problemy wklej cały html

Dodam tylko, że skrypt w żaden sposób nie modyfikuje PLIKU obrazka, zmienia tylko sposób jego wyświetlania w przeglądarce.

PS. jeszcze raz przeczytałem Twojego drugiego posta i podejrzewam, że alerta dałeś po wykonaniu mojego skryptu? Wtedy ta "dziwna" wielkosc to właśnie wartość wyliczona z proporcji. Wyświetl sobie obrazek w przeglądarce - podejrzewam, że cały czas działa!
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.