How to find the extension of an image from path in PHP?
I had problem with first answer and url with anchor ex. google.com/image.jpg#anchor
better solution
$filename_from_url = parse_url($url);
$ext = pathinfo($filename_from_url['path'], PATHINFO_EXTENSION);
$ext = pathinfo(
parse_url('/testdir/dir2/image.gif?foo=bar', PHP_URL_PATH),
PATHINFO_EXTENSION
); //$ext will be gif
I think the most correct way is using echo exif_imagetype function:
exif_imagetype("/testdir/dir2/image.gif");
function get_image_type($image_path){
$extension = array(IMAGETYPE_GIF => "gif",
IMAGETYPE_JPEG => "jpeg",
IMAGETYPE_PNG => "png",
IMAGETYPE_SWF => "swf",
IMAGETYPE_PSD => "psd",
IMAGETYPE_BMP => "bmp",
IMAGETYPE_TIFF_II => "tiff",
IMAGETYPE_TIFF_MM => "tiff",
IMAGETYPE_JPC => "jpc",
IMAGETYPE_JP2 => "jp2",
IMAGETYPE_JPX => "jpx",
IMAGETYPE_JB2 => "jb2",
IMAGETYPE_SWC => "swc",
IMAGETYPE_IFF => "iff",
IMAGETYPE_WBMP => "wbmp",
IMAGETYPE_XBM => "xbm",
IMAGETYPE_ICO => "ico");
return $extension[exif_imagetype($image_path)];
}
It's usually more desirable to detect the actual image type (not by extension but by its contents). For that, use getimagesize()
.