Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Automatyczne skalowanie obrazka do wcześniej ustalonych rozmiarów
Ciupaska
post
Post #1





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 25.05.2009

Ostrzeżenie: (10%)
X----


Automatyczne skalowanie obrazka do wcześniej ustalonych rozmiarów

W jaki sposób można wyświetlić obraz, który jeśli będzie większy niż 500x500px np. 670x700 zostanie automatycznie zeskalowany do rozmiaru 500x500px (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Chodzi o istniejący obraz (nie wgrywany) po prostu przykładowo chcę dać możliwość umieszczania obrazków z innych stron przez użytkownika, ale żeby strona się nie rozpadała, obraz będzie skalowany, jeśli przekroczy dozwolony rozmiar.

Przykład http://forum.softmania.pl/showthread.php?t=28883 jak zrobić coś takiego? Nie koniecznie z takim efektem po kliknięciu.

Chodzi o coś co jest stosowane na forach, ktoś wrzuca obraz 1200x900px a obrazek jest zmniejszany do rozmiaru 300x180px np.

Ten post edytował Ciupaska 5.07.2009, 04:26:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
nmts
post
Post #2





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

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


Napisałem coś takiego:

  1. <?php
  2. $maxWidth=500; $maxHeight=500;
  3. $image="obrazek.jpg";
  4. $size=getimagesize($image);
  5. while($size[0]>$maxWidth || $size[1]>$maxWidth){
  6. $size[0]=($size[0]*95)/100; // liczba 95 mówi o dokładności skalowania, im większa tym skalowanie
  7. $size[1]=($size[1]*95)/100; // jest dokładniejsze(bliżej podanych wartości), ale dłużej wykonuje pętle,
  8. }
  9. $width=$size[0];
  10. $height=$size[1];
  11. ?>


  1. <img src=".$image." height=".$height." width=".$width." />


Każdy obrazek wystarczy przez to przepuścić.
Go to the top of the page
+Quote Post
Ciupaska
post
Post #3





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 25.05.2009

Ostrzeżenie: (10%)
X----


Edit: Matko, ale ja jestem nie kumaty ostatnio. WIELKIE DZIĘKI (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) !!!!!!!!!!!!

Jest jeszcze mały problem...
Skrypt oparty jest o system szablonów, jeśli wstawiam kod php, wyświetla się on jako zwykłe litery:
(IMG:http://www.iv.pl/images/6f6kjzow91njk4rlqnxr.png)

Próbowałem najpierw wstawić php kodem
  1. <script LANGUAGE="php">
  2. W tym miejscu wstaw dowolny kod PHP


Ale również nie wiele to dało, bo nie czyta kodu php.
Jak wstawić kod php aby był widoczny w miejscu
TUTAJ DOWOLNY KOD PHP

Mógł bym najprościej zrobić ramkę, w której umieścił bym kod php ale wtedy nie czyta adresu obrazka.
Czylki kodu: {STORY_URL}


  1. <div class="aclear"></div>
  2. </div>
  3. <div class="mainpost1"><div class="posttitle"><a href="#">{STORY_TITLE}</a><br>
  4.  
  5. TUTAJ DOWOLNY KOD PHP
  6. </div>
  7. <div class="postdetails">{LANG_SUBBY} {STORY_USER_NAME} {STORY_AGO} {LANG_AGO} (via {STORY_DOMAIN})</div>
  8. <div class="postcontent">{STORY_DESC}</div>


Ten post edytował Ciupaska 5.07.2009, 15:42:03
Go to the top of the page
+Quote Post
nmts
post
Post #4





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

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


Najlepiej będzie jeśli pogrzebiesz w pliku php, który jest odpowiedzialny za wysłanie danych do pliku szablonu. Wystarczy, że znajdziesz w nim zmienną przechowującą ścieżkę do pliku, 'dasz' tą zmienną temu kawałkowi kodu i wyślesz do szablonu wysokość i szerokość. W pliku tym powinieneś się połapać jak są wysyłane. W pliku szablonu dodasz {width} i {height} w img, i może coś zadziała.
Go to the top of the page
+Quote Post
Ciupaska
post
Post #5





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 25.05.2009

Ostrzeżenie: (10%)
X----


Tylko tu chodzi o kod:

  1. <?php
  2. $maxWidth=500; $maxHeight=500;
  3. $image="obrazek.jpg";
  4. $size=getimagesize($image);
  5. while($size[0]>$maxWidth || $size[1]>$maxWidth){
  6. $size[0]=($size[0]*95)/100; // liczba 95 mówi o dokładności skalowania, im większa tym skalowanie
  7. $size[1]=($size[1]*95)/100; // jest dokładniejsze(bliżej podanych wartości), ale dłużej wykonuje pętle,
  8. }
  9. $width=$size[0];
  10. $height=$size[1];
  11. ?>


Nie wiem jak go wstawić do pliku STORY.PHP
Na kod story.php możesz zerknąć na: http://pokazywarka.pl/8cdr65/
Bo w pliku STORY.HTML (plik szablonu) nie działa żaden kod php
Go to the top of the page
+Quote Post
nmts
post
Post #6





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

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


http://pokazywarka.pl/r920ds/

Pogrubiłem, to co dodałem, zamiast "obrazek.jpg" dałem $story['story_url']. W szablonie powinno wyglądać mniej więcej tak..

  1. <img src="{STORY_URL}" height="{IMG_H}" width="{IMG_W}" />
Go to the top of the page
+Quote Post
Ciupaska
post
Post #7





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 25.05.2009

Ostrzeżenie: (10%)
X----


Super działa pięknie, prubowałem w identyczny sposób zrobić tak z index.php ale albo wyrzuca błąd linijki, albo kod
  1. <img src="{STORY_URL}" height="{IMG_H}" width="{IMG_W}" />
nie wyświetla obrazka, jak dodać do index.php kod który umieściłeś w Story.php? został tylko index.php, ale coś robię źle....

http://pokazywarka.pl/oyyqmv/
Go to the top of the page
+Quote Post
nmts
post
Post #8





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

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


http://pokazywarka.pl/k0v3yo/
Nie wiem czy dobrze. Do szablonu przekazywana jest tablica więc zmienne {*} muszą inaczej wyglądać. Porównaj sobie z innymi i się dowiesz jak.
Go to the top of the page
+Quote Post
Ciupaska
post
Post #9





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 25.05.2009

Ostrzeżenie: (10%)
X----


Faktycznie są inne, ale wystarczyło dodać {STORIES.story_url} . Dzięki wielkie wszystko ładnie działa! (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

Ale nie pomyślałem o bardzo ważnej rzeczy, obrazku alternatywnym.

Jeśli go nie ma wyskakuje błąd linijki
Kod
Warning: getimagesize(a.png) [function.getimagesize]: failed to open stream: No such file or directory in /home/pierzch/domains/mojadomena.pl/public_html/jakasstrona.php on line 22


Zastosowałem prosty kod:
  1. function ImgError(source)
  2. {
  3. source.src = "error.gif";
  4. source.onerror = "";
  5. return true;
  6. }


I jeśli nie ma obrazka o nazwie obraz.jpg, wyświetla się error.gif
Ale nadal wyskakuje mi błąd linijki
Kod
Warning: getimagesize(a.png) [function.getimagesize]: failed to open stream: No such file or directory in /home/pierzch/domains/mojadomena.pl/public_html/jakasstrona.php on line 22


Jak się tego pozbyć?

Ten post edytował Ciupaska 6.07.2009, 13:40:04
Go to the top of the page
+Quote Post
nmts
post
Post #10





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

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


Zastosuj file_exists(); i uruchom cały kod jeśli plik istnieje.
Go to the top of the page
+Quote Post
Ciupaska
post
Post #11





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 25.05.2009

Ostrzeżenie: (10%)
X----


coś robie źle, bo teraz wyświetla się error.gif nawet jeśli jest obrazek obraz.jpg (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)

Ten post edytował Ciupaska 6.07.2009, 14:25:12
Go to the top of the page
+Quote Post
nmts
post
Post #12





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

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


Nie ogarniam dokładnie ostatniego problemu. Bez sprawdzania pliku nie było error.gif gdy go być nie miało? Może w if(file_exist...) zostawić tylko getimagesize()l, a resztę poza nim, bo może coś potrzebujesz, np. story.url. Możesz pójść na łatwiznę i dodać @ przed getimagesize(); żeby schować error, jak Cie to interesuje...
Z tego co rozumiem to jeśli nie ma obrazka, to ma być widoczny error.gif? Czyli jeśli nie ma obrazka, to znaczy, że story_url nic nie przechowuje? To daj jej adres adres do error.gif, jeśli jest pusta(zwykły warunek), i js nie będzie potrzebny..

Ten post edytował nmts 6.07.2009, 15:21:29
Go to the top of the page
+Quote Post
Ciupaska
post
Post #13





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 25.05.2009

Ostrzeżenie: (10%)
X----


Kombinowałem jeszcze ale w końcu zastosowałem @ przed getimagesize();
Teraz jest ok. Jeszcze raz dzięki wielkie!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.12.2025 - 17:33