PHP中是否有标准函数可以从相应的文件路径中找到图像的扩展名?
例如,如果我的图像路径类似于'/testdir/dir2/image.gif',那么该函数应该返回'gif'。
谢谢
$ext = pathinfo(
parse_url('/testdir/dir2/image.gif?foo=bar', PHP_URL_PATH),
PATHINFO_EXTENSION
); //$ext will be gif
我遇到了一个问题,涉及第一个答案和包含锚点的url,例如google.com/image.jpg#anchor。
更好的解决方法:
$filename_from_url = parse_url($url);
$ext = pathinfo($filename_from_url['path'], PATHINFO_EXTENSION);
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)];
}
正如Shrapnel上校所提到的,有很多种方法
$path = '/some/where/img.gif';
$path = explode('.',$path);
$path = end($path);
我认为可以使用 strrpos()
和 substr()
方法来简化操作
$path = "/testdir/dir2/image.gif";
$ext = substr($path, strrpos($path, '.')+1);
echo $ext; // output will be gif
更多与此问题相关的另一个问题的答案
$file_path = '/some/where/img.gif';
$info = new SplFileInfo($file_path);
$file_extension = $info->getExtension();
var_dump($file_extension);
更多细节请查看The SplFileInfo class
希望这能对你有所帮助。
祝好!
Mudassar Ali
http://www.php.net/imagepng
http://www.php.net/imagegif
http://www.php.net/imagejpeg
strrpos()
和substr()
可以为您完成此操作。还有其他许多花式方法。
hello.jpg
文件,但我把它重命名为hello.gif
并上传了它,这样你得到的是扩展名而不是正确的类型。在我看来,Pekka的方法更好。 - DrColossos