Jaki jest najlepszy i najszybszy sposób sprawdzenia, czy obraz jest poprawny w PHP? Potrzebuję go, aby móc sprawdzić GIF, JPG, a także obrazy PNG.Jaki jest najlepszy i najszybszy sposób sprawdzenia, czy obraz jest poprawny w PHP?
Odpowiedz
Chyba getimagesize
:
list($width, $height, $type, $attr) = getimagesize("path/to/image.jpg");
if (isset($type) && in_array($type, array(
IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF))) {
...
}
Przeczytaj dokumentację: Nie używaj getimagesize() do sprawdzania, czy dany plik jest prawidłowym obrazem. http://php.net/manual/en/function.getimagesize.php –
używam tej funkcji ... sprawdza adresy URL zbyt
function isImage($url){
$params = array('http' => array(
'method' => 'HEAD'
));
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp)
return false; // Problem with url
$meta = stream_get_meta_data($fp);
if ($meta === false){
fclose($fp);
return false; // Problem reading data from url
}
}
Tak, masz rację ... dodano nawias. –
exif_imagetype jest lepszym rozwiązaniem.
Ta metoda jest szybsza niż użycie getimagesize. Aby zacytować php.net "Wartość zwracana to ta sama wartość, którą getimagesize() zwraca w indeksie 2, ale exif_imagetype() jest znacznie szybszy."
if(exif_imagetype('path/to/image.jpg')) {
// your image is valid
}
Oczywiście działa to tylko wtedy, gdy rozszerzenie EXIF jest włączone. W moim przypadku tak nie jest i nie mam nad tym kontroli :( –
Używam tego:
function is_image($path)
{
$a = getimagesize($path);
$image_type = $a[2];
if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP)))
{
return true;
}
return false;
}
exif_imagetype jest znacznie szybsze niż getimagesize i nie korzysta z GD-Lib (pozostawiając ślad szczuplejsze MEM)
function isImage($pathToFile)
{
if(false === exif_imagetype($pathToFile))
return FALSE;
return TRUE;
}
zgodnie z zaleceniami PHP documentation:
"Nie używaj funkcji getimagesize() do sprawdzania, czy dany plik jest prawidłowym obrazem. zbudowane z myślą o kliencie rozwiązanie takie jak rozszerzenie Fileinfo. "
Oto przykład:
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$type = finfo_file($finfo, "test.jpg");
if (isset($type) && in_array($type, array("image/png", "image/jpeg", "image/gif"))) {
echo 'This is an image file';
} else {
echo 'Not an image :(';
}
- 1. Jaki jest najlepszy sposób sprawdzenia, czy URL istnieje w PHP?
- 2. Jaki jest poprawny sposób sprawdzenia istnienia zagnieżdżonego atrybutu w Chef?
- 3. Jaki jest najlepszy sposób sprawdzenia, czy istnieje atrybut?
- 4. Jaki jest najlepszy sposób sprawdzenia zestawu wyników IQueryable jest pusty?
- 5. Jaki jest najłatwiejszy/najszybszy sposób sprawdzenia, kiedy utworzono gałąź git?
- 6. Jaki jest poprawny sposób sprawdzenia, czy APC jest zainstalowany i działa?
- 7. Jaki jest najszybszy sposób sprawdzenia duplikatów cyfr numeru?
- 8. Jaki jest najlepszy sposób sprawdzenia, czy atrybut istnieje i czy jest ustawiony?
- 9. Jaki jest najszybszy sposób na sprawdzenie, czy obiekt jest IEnumerable?
- 10. Jaki jest poprawny sposób sprawdzenia, czy wartość jest datą/liczbą w Delphi
- 11. Jaki jest najlepszy sposób sprawdzenia, czy obiekt jest tablicą, czy nie w JavaScript?
- 12. Jaki jest poprawny i idiomatyczny sposób sprawdzenia, czy ciąg zaczyna się od określonej postaci w Rust?
- 13. Jaki jest najszybszy sposób sprawdzenia, czy wejściowy ciąg znaków jest prawidłowym wyrażeniem RPN?
- 14. Jaki jest najlepszy/najszybszy sposób nauki GLADE z C?
- 15. Java - Najszybszy sposób sprawdzenia, czy URL istnieje
- 16. C# w VS2005: jaki jest najlepszy sposób sprawdzenia, czy ciąg znaków jest pusty?
- 17. Jaki jest właściwy sposób sprawdzenia, czy Iterator jest kompletny?
- 18. Jaki jest najszybszy sposób sprawdzenia, czy punkt znajduje się wewnątrz wielokąta w pytonie?
- 19. Jaki jest najszybszy sposób sprawdzenia, czy wszystkie wartości w tablicy są numeryczne?
- 20. poprawny sposób sprawdzić, czy typ jest Nullable
- 21. Jaki jest poprawny sposób udokumentowania parametru ** kwargs?
- 22. Jaki jest poprawny sposób zamknięcia połączenia TCP?
- 23. Jaki jest poprawny sposób inicjowania wskaźnika wc?
- 24. Jaki jest najlepszy sposób liczenia odsłon w PHP/MySQL?
- 25. Jaki jest najlepszy sposób na usunięcie elementu tablicy w PHP?
- 26. Jaki jest najlepszy sposób integracji dispatchera zdarzeń w bibliotece PHP?
- 27. Jaki jest najlepszy sposób przechowywania zmiennych konfiguracyjnych w PHP?
- 28. Jaki jest najlepszy sposób dodawania przedziału czasu w PHP?
- 29. Jaki jest najlepszy sposób tworzenia wyszukiwania whois?
- 30. Jaki jest najlepszy sposób rejestrowania aktywności użytkowników?
Co masz na myśli przez "ważne"? Sprawdzanie, czy plik obrazu ma poprawny format? –