Comprobar que existe una imágen en PHP.
Para dar consistencía a nuestras páginas web, durante la programación debemos tener en cuenta muchos detalles que pueden fallar en un momento determinado.
Uno de ellos surge a la hora de trabajar con imágenes subidas por los usuarios. Cuando necesitamos mostrarlas, debemos asegurarnos antes de que realmente la imágen existe y que no ha habido ningún error durante la subida.
La primera idea que se nos viene a la cabeza es usar la función file_exists:
Según su descripción, file_exists verifica si un archivo o directorio existe, devolviendo true o false. El gran problema de la función file_exists es que no funciona correctamente cuando le pasamos como parámetro una url donde teóricamente debe estar la imágen.
En este ejemplo, siempre obtendremos NO existe la imagen, ya que como hemos comentado, la función file_exists no funciona correctamente para con direcciones remotas.
Por lo tanto, debemos utilizar otra forma para comprobar si realmente existe una imagen. Existen varias formas, algunas de ellas usando la función fopen(), sin embargo para mi es mucho más intuitivo y supondrá una menor carga para el servidor utilizar la función GetImageSize().
La función getImageSize() determinará el tamaño de cualquier archivo de imagen dado y devuelve las dimensiones junto con el tipo de archivo y una cadena de texto de altura/ancho a ser usada en una etiqueta HTML IMG corriente y el tipo de contenido HTTP correspondiente.
Utilizando getImageSize(), el script quedaría muy parecido a esto:
De esta forma, si la imagen existe, PHP devolverá correctamente Existe la imagen, funcionando tal y como se espera.
Para mantener simple el código (KISS), no dudeis en crear una función (existe_imagen($url), por ejemplo) en la cual se comprobará si existe la imágen o no utilizando getImageSize(), y devolverá true o false dependiendo del resultado.
Pero eso, ya os lo dejo a vueltra elección.
El código utilizando la función getImageSize extraido de: tutores.org
Si eres nuevo, puedes subscribirte a nuestras noticias por RSS feed. Gracias por tu visita!










