Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [js][jquery] Proporcjonalność zdjęcia
deha21
post 3.09.2009, 08:48:48
Post #1





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Witam,
Potrzebuję jquery lub ewentualnie czystym javascript takie działanie które z podanych danych szerokości i wysokości danego zdjęcia poda wynik zdjęcia proporcjonalnego względem nowej szerokości. Czyli mam dane
X=1024 oraz Y=768 i teraz wpisuje do X np. 640 i klikam na przycisk (on wywołuje funckcję) i wtedy wartość Y oblicza się proporcjonalnie czyli 480.
Działanie proporcjonalności zasięgnąłem z kodu tworzenia miniaturek biblioteką GD. Na matematyce się nie znam ale mniemam, że to coś takiego winksmiley.jpg
  1. $thumb_w=$new_w;
  2. $thumb_h=$old_y*($new_h/$old_x);

A więc zrobiłem coś takiego:
[JAVASCRIPT] pobierz, plaintext
  1. $('#ratiox').click(function(){
  2. var newY = orgH*(orgW/orgW);
  3. $('#orgH').val(newY);
  4. });
[JAVASCRIPT] pobierz, plaintext

Jest orgW/orgW dlatego, że newH będzie takie jak orgW.
Niestety nie działa. Dane z orgH i orgW są dobrze pobierane. I jeszcze, żeby się zaokrąglało do pełnych pikseli winksmiley.jpg

Proszę o pomoc
Pozdrawiam

Ten post edytował deha21 3.09.2009, 08:49:39


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
erix
post 3.09.2009, 14:18:00
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Potrzebuję jquery lub ewentualnie czystym javascript takie działanie które z podanych danych szerokości i wysokości danego zdjęcia poda wynik zdjęcia proporcjonalnego względem nowej szerokości. Czyli mam dane


To nie ma znaczenia, czy JS, czy +jQuery.

Cytat
Na matematyce się nie znam ale mniemam, że to coś takiego

A ciężko policzyć proporcje jednego wymiaru względem drugiego i przemnożyć? Tu nie matematyka, tylko bardziej geografia. tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
deha21
post 3.09.2009, 14:29:05
Post #3





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Nie wiem do jakiej szkoły ty chodziłeś ale u mnie to właśnie nazywało się matematyką winksmiley.jpg Jakieś wskazówki co do kodu?


--------------------
Go to the top of the page
+Quote Post
erix
post 3.09.2009, 14:39:50
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale skala głównie przydaje się w praktyce na geografii. tongue.gif

W PHP korzystam mniej więcej z takiej konstrukcji:
  1. function scaleTo($maxValue, $scaleByWidth){
  2. if($scaleByWidth){
  3. $heightFactor = $this->height/$this->width;
  4. $this->resizeTo($maxValue, round($heightFactor*$maxValue));
  5. }else{
  6. $widthFactor = $this->width/$this->height;
  7. $this->resizeTo(round($widthFactor*$maxValue), $maxValue);
  8. }
  9. return;
  10. }


Praca domowa - wykombinuj coś z tego. ;]


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
nitek
post 3.09.2009, 14:39:57
Post #5





Grupa: Zarejestrowani
Postów: 209
Pomógł: 37
Dołączył: 27.02.2008
Skąd: Kwidzyn

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


problemu raczej w "algorytmie" nie ma... winksmiley.jpg


[JAVASCRIPT] pobierz, plaintext
  1. var old_szer=1024;
  2. var old_wys=768;
  3.  
  4. var new_szer=640;
  5.  
  6. var new_wys= (new_szer/old_szer)*old_wys;
  7. alert(new_wys);
  8.  
  9. //new_wys=480
[JAVASCRIPT] pobierz, plaintext


Ten post edytował nitek 3.09.2009, 14:42:23


--------------------
Go to the top of the page
+Quote Post
deha21
post 3.09.2009, 17:02:34
Post #6





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Hmm... Coś jakby nie działa:
[JAVASCRIPT] pobierz, plaintext
  1. var orgw = $('#orgw').val();
  2. var orgh = $('#orgh').val();
  3. var old_w = $('#old_w').val();
  4. var old_h = $('#old_h').val();
  5.  
  6. $('#ratiox').click(function(){
  7. var new_y = (orgw/old_w)*old_h;
  8. $('#orgh').val(new_y);
  9. });
[JAVASCRIPT] pobierz, plaintext

Zapewniam, że nazewnictwo jest dobre na 100% więc tu się nie pomyliłem.
Aha i orgw, org_h itp. są polami input text więc dlatego jest val a nie attr winksmiley.jpg

Ten post edytował deha21 3.09.2009, 17:13:28


--------------------
Go to the top of the page
+Quote Post
erix
post 3.09.2009, 17:21:34
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie działa, to znaczy?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
deha21
post 3.09.2009, 18:24:02
Post #8





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Aa już odkryłem co nie działa winksmiley.jpg Sam algorytm działa dobrze i wypisuje liczbę (jeszcze tutaj prośba jak ją zaokrąglić?). Tylko problem jest taki, że jak zmienię w polu "orgw" daną to nie jest ona uaktualniana.
[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){
  2. var orgw = $('#orgw').val();
  3. var orgh = $('#orgh').val();
  4. var old_w = $('#old_w').val();
  5. var old_h = $('#old_h').val();
  6.  
  7. $('#ratiox').click(function(){
  8. var newy = (orgw/old_w)*old_h;
  9. $('#orgh').val(newy);
  10. });
  11. });
[JAVASCRIPT] pobierz, plaintext

Dane z orgw i orgh są na początku ustalane przez PHP (getimagesize). Ale przy zmianie zmienna orgw w js powinna się uaktualnić.
  1. <?
  2. Szerokość: <input type='text' name='width' id='orgw' value='".$width."' size='4'>
  3. Wysokość: <input type='text' name='height' id='orgh' value='".$height."' size='4'>
  4. ?>


Może znam rozwiązanie ale jest trochę na około i wydaje mi się, że znacie lepszy sposób. Chodzi o to, że przy edycji pola orgw zmienna orgw w js pobiera ponownie dane z pola orgw.


--------------------
Go to the top of the page
+Quote Post
erix
post 3.09.2009, 18:52:31
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Chodzi o to, że przy edycji pola orgw zmienna orgw w js pobiera ponownie dane z pola orgw.

Jaśniej?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
deha21
post 4.09.2009, 08:15:11
Post #10





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Ok zrobiłem. Chodziło o to, żeby przy naciśnięciu przycisku jeszcze raz pobrano wartość z pola.
Czyli dopisałem nową zmienną która jest tą uaktualnianą (ta stara odczytająca początkową wartość weight jest mi potrzebna jeszcze do czegoś innego).
[JAVASCRIPT] pobierz, plaintext
  1. $('#ratiox').click(function(){
  2. var orgw2 = $('#orgw').val();
  3. var newy = (orgw2/old_w)*old_h;
  4. $('#orgh').val(newy);
  5. });
[JAVASCRIPT] pobierz, plaintext


A co do zaokrąglania liczb to znalazłem Math.round winksmiley.jpg


--------------------
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: 13.06.2025 - 11:44