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().

Tags:

Php

Image