2009-10-17 20 views

Respuesta

13

Uso de (parte) de la biblioteca GD.

PHP: GD - Manual

array getimagesize (string $filename [, array &$imageinfo ]) 

El primer elemento de la matriz será de 0 si no hay imagen. PHP: getimagesize

Si no tiene instalado GD (la mayoría de las veces lo hará), puede leer el encabezado del archivo como Shane mentioned.

EDIT: En realidad, como Neal señaló en los comentarios, la biblioteca GD ni siquiera es necesaria para usar esta función. Entonces úselo.

+2

@Neal - ¡En realidad, no lo hice! No tenía ni idea. Gracias por señalar eso. La respuesta ha sido editada. No es la primera vez que he sido RTFM – snicker

+0

No hay problema^_^¡Feliz de ayudar! – Neal

+3

Es mejor y * más rápido * usar 'exif_imagetype'. – Brett

4

La manera más eficiente sería mirar los bytes principio del archivo y prueba de los 'número mágico' especificador de fichero. Here is a list of magic numbers.

+0

que sería el más eficiente que disparar hasta GD, pero creo que con el binario se abre, etc .. es un poco más de la cabeza de la mayoría de las personas. –

+3

Si eso es cierto, es bastante decepcionante. ¿La mayoría de la gente no tiene CS grados? –

+3

que no lo hacen .. pero he estado escribiendo código desde que tenía 7. Sorprendentemente, muchas personas pueden obtener grados sin conocer realmente lo que se supone que deben. Hablo por experiencia, porque en realidad tengo un título en ingeniería civil, y conocía muchos "controles deslizantes" que simplemente se deslizaban. Un título no significa nada. La prueba de que puedes hacer algo sí lo hace. – snicker

1

Para el registro: Ahora en 2013+ podemos:

Para máx. compatibilidad (si no tiene biblioteca GD).
Uso del siempre disponible mime-content-type ((PHP 4> = 4.3.0, PHP 5))

$type = mime_content_type($filename); 
if (strstr($type, 'image/')) 
{ 
    echo 'is image'; 
} 
+2

Como una actualización esto ahora ya no se utiliza: http://us3.php.net/manual/en/function.mime-content-type.php – bonez

6

mejor manera de comprobar si el archivo es una imagen

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; 
} 

más: http://www.binarytides.com/php-check-if-file-is-an-image/

Cuestiones relacionadas