¿Cuál es la mejor y más rápida forma de comprobar si la imagen es válida en PHP? Lo necesito para poder verificar imágenes GIF, JPG y PNG.¿Cuál es la mejor y más rápida forma de verificar si la imagen es válida en PHP?
Respuesta
supongo getimagesize
:
list($width, $height, $type, $attr) = getimagesize("path/to/image.jpg");
if (isset($type) && in_array($type, array(
IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF))) {
...
}
Leer documentación: No use getimagesize() para verificar que un archivo dado sea una imagen válida. http://php.net/manual/en/function.getimagesize.php –
utilizo esta función ... comprueba las direcciones URL demasiado
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
}
}
sí, tienes razón ... agregó el corchete. –
exif_imagetype es una solución mejor.
Este método es más rápido que usar getimagesize. Para citar php.net "El valor de retorno es el mismo valor que getimagesize() regresa en el índice 2 pero exif_imagetype() es mucho más rápido".
if(exif_imagetype('path/to/image.jpg')) {
// your image is valid
}
Por supuesto, esto solo funciona cuando la extensión EXIF está habilitada. En mi caso, no es el caso y no tengo control sobre esto :( –
utilizo este:
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 es mucho más rápido que getimagesize y no utiliza GD-Lib (dejando una huella más ligera mem)
function isImage($pathToFile)
{
if(false === exif_imagetype($pathToFile))
return FALSE;
return TRUE;
}
Según las recomendaciones del PHP documentation:
"No use getimagesize() para verificar que un archivo dado sea una imagen válida. Utilice una p solución construida en el lugar, como la extensión Fileinfo en su lugar ".
Aquí se muestra un ejemplo:
$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. ¿Cuál es la forma más rápida de verificar si dos Tbitmaps son iguales?
- 2. ¿Cuál es la forma más rápida de verificar si dos números dados son coprime?
- 3. La forma más rápida de verificar si existe un objeto
- 4. ¿Cuál es la mejor forma de verificar si hay un entero positivo (PHP)?
- 5. ¿Cuál es la forma más rápida de grabar varios archivos?
- 6. ¿Cuál es la forma más rápida de cargar y cambiar el tamaño de una imagen?
- 7. al codificar cuál es la forma más rápida de determinar si un tipo es IDisposable
- 8. ¿La forma más rápida de verificar si un tipo es blittable?
- 9. ¿Cuál es la forma más rápida de verificar si la cadena tiene una letra mayúscula en C#?
- 10. ¿Cuál es la forma más rápida de probar si un objeto es IEnumerable?
- 11. ¿Cuál es la manera más rápida de verificar si hay dígitos duplicados de un número?
- 12. ¿Cuál es la forma más confiable de verificar si una variable de JavaScript es nula?
- 13. ¿Cuál es la mejor manera de verificar si la vista es visible en la ventana?
- 14. Cómo verificar si la URL es válida en Android
- 15. ¿Cuál es la forma más rápida de dibujar una imagen en Gtk +?
- 16. ¿Cuál es la mejor manera de verificar si existe una URL en PHP?
- 17. ¿Cuál es la manera más rápida de verificar si una clase tiene una función definida?
- 18. ¿Cuál es la forma más rápida de comparar dos objetos en PHP?
- 19. ¿Cuál es la forma más rápida de verificar si una palabra de una cadena está en otra cadena?
- 20. ¿Existe alguna manera más rápida de verificar si esta es una fecha válida?
- 21. ¿Cuál es la forma más rápida de verificar si todos los valores en una matriz son numéricos?
- 22. ¿Cuál es la mejor/más segura forma de reinstalar Homebrew?
- 23. ¿Cuál es la forma más rápida de saltar a un constructor (es) en una clase?
- 24. ¿Cuál es la mejor/más rápida forma de aprender GLADE con C?
- 25. ¿Cuál es la mejor/más rápida/la forma más fácil de contraer todos los proyectos en Visual Studio?
- 26. ¿Cuál es la forma más rápida de verificar que la entrada exista en la base de datos?
- 27. ¿Cuál es la forma más rápida de dibujar texto formateado en la API de Win32?
- 28. En Java, ¿cuál es la forma más rápida de obtener la hora del sistema?
- 29. La forma más rápida de reemplazar cadenas en PHP
- 30. ¿Cuál es la forma más rápida de aprender Android y comenzar rápidamente a desarrollar aplicaciones?
¿Qué quiere decir por "válida"? Verificando si el archivo de imagen está en el formato correcto? –