Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wykrycie formatu obrazka gif jpg png
Forum PHP.pl > Forum > Przedszkole
v8powerage
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";
Mega_88
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;
Pyton_000
  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. }
v8powerage
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
thek
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.
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.