Una forma fácil de hacerlo es delegar el trabajo a ImageMagick a través del módulo PerlMagick CPAN. Los métodos Identify
y Ping
están diseñados para ese propósito.
use strict;
use Image::Magick;
my $im = Image::Magick->new();
my ($width, $height, $size, $format) = $im->Ping('/path/to/my/image.jpg');
Después de ejecutar este pequeño programa, la variable $format
contendrá una cadena con el formato identificado de la imagen (en este ejemplo: "JPEG"), o undef
en caso de error (archivo no existente, no reconocido formato, etc.).
Editar: ... y para responder por completo a su pregunta: probablemente es seguro asumir que un determinado archivo es una imagen si Ping
devuelve una cadena de formato, y si es parte de lo que subconjunto de decidirse a blanco -Lista de ImageMagick's list of supported formats (que también incluye formatos sin imágenes).
Supongo que puede detectar algunos formatos de imagen (.jpg, .png, .gif), pero no todos los formatos existentes.) ¿Sería suficiente? – raina77ow
mi pregunta apuntaba a una solución SIN mirar las extensiones de archivo – Thariama
¿Qué le hizo pensar que hablé sobre las extensiones de archivo, no sobre los formatos de archivo? – raina77ow