Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wykrycie formatu obrazka gif jpg png
v8powerage
post 15.07.2015, 03:28:20
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 15.07.2015

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


Witam
Otóż mam pewiem problem. Posiadam taki skrypt czata który bierze avatary userów z drupala. Jest tam taka linijka która pobiera obrazki, wszystko działa jednakże tylko jeśli user ma avatar w formacie .jpg, bo tak jest w kodzie. Jak zrobić aby również obrazki w gif i png się wyświetlały? Próbowałem glob ale niezbyt mi to wyszło.

  1. $imgurl ="http://mypage.com/files/pictures/picture-" . ($user_id) . ".jpg";
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Mega_88
post 15.07.2015, 07:11:30
Post #2





Grupa: Zarejestrowani
Postów: 360
Pomógł: 34
Dołączył: 20.08.2011

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


Tak na szybko:

  1. $imgurl1 ="http://mypage.com/files/pictures/picture-" . ($user_id) . ".jpg";
  2. $imgurl2 ="http://mypage.com/files/pictures/picture-" . ($user_id) . ".png";
  3. $imgurl3 ="http://mypage.com/files/pictures/picture-" . ($user_id) . ".gif";
  4.  
  5. if (file_exists($imgurl1)) { $plik=$imgurl1; }
  6. elseif (file_exists($plik2)) { $plik=$imgurl2; }
  7. else { $plik=$imgurl3; }
  8.  
  9. echo $plik;
Go to the top of the page
+Quote Post
Pyton_000
post 15.07.2015, 07:23:39
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


  1. $url = "http://mypage.com/files/pictures/picture-" . $user_id;
  2.  
  3. foreach(['.jpg','.png','.gif'] as $ext) {
  4. if(file_exists($url.$ext)) {
  5. die(file_get_contents($url.$ext));
  6. break;
  7. }
  8. }
Go to the top of the page
+Quote Post
v8powerage
post 21.07.2015, 23:19:28
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 15.07.2015

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


Dzięki za odpowiedzi, niestety podane rozwiązania nie działają w moim przypadku, może dam cały kod a nie tylko jedną linijkę, żeby było w kontekście:

  1. function get_avatar($image, $user_id, $account)
  2. {
  3. $imgurl ="http://strona.pl/files/pictures/picture-" . ($user_id) . ".jpg";
  4.  
  5. if (!is_imgurl_good($imgurl)) {
  6. $imgurl = "http://strona.pl/sites/all/themes/theme/user.png";
  7. }
  8. return $imgurl;
  9. }
  10.  
  11. function is_imgurl_good($imgurl) {
  12. if (@getimagesize($imgurl))
  13. return true;//Check that if this returns false the previous function works
  14. //return false; //Comment out the first line and uncomment this one to show the reverse case.
  15.  
  16. }


Próbowałem coś w tym stylu
  1. $imgurl ="http://mypage.com/files/pictures/picture-" . ($user->picture) . "";

żeby pobrać avatar przez drupala ale to rozwiązanie nie działa niestety

Ten post edytował v8powerage 15.07.2015, 20:50:59
Go to the top of the page
+Quote Post
thek
post 22.07.2015, 06:16:15
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Sprawdź sobie wewnątrz funkcji is_imgurl_good() albo tuż przed nią jak wygląda zawartość zmiennej $imgurl, bo mam wrażenie, że chyba nie przekazujesz tam tego co trzeba i w efekcie powstaje Ci nieprawidłowy url. Tak czy inaczej zwróć uwagę, że funkcja getimagesize ma @ czyli wyciszanie błędów. Wywal ją, bo mogą błędy lecieć i nawet tego nie widzisz. Może brak jest uprawnień do pliku lub plik nie istnieje bo Twoje $user->picture jest puste (zasięg zmiennych przykładowo) i w efekcie błędny url dostajesz. Ogólnie @ w kodzie to zła praktyka. Powinieneś obsłużyć błędy i wyjątki jeśli tylko możesz.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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: 14.08.2025 - 04:29