如何从无扩展名的图片URL中获取图片文件扩展名?
解决Picsum图片URL无法用pathinfo获取扩展名的问题
这个URL的路径部分没有显式包含文件扩展名(如.jpg),pathinfo()只能解析URL中存在的后缀字段,因此返回空字符串。可以通过以下两种方法解决:
方法1:解析HTTP响应头获取扩展名
通过get_headers()获取图片的响应头,提取Content-Type字段后映射为对应扩展名:
$url = 'https://picsum.photos/200/200?random=61081'; $headers = get_headers($url, 1); $contentType = $headers['Content-Type']; $extMap = [ 'image/jpeg' => 'jpg', 'image/png' => 'png', 'image/gif' => 'gif' ]; $extension = $extMap[$contentType] ?? 'unknown'; echo $extension;
方法2:通过图片内容直接识别类型
使用getimagesize()读取图片数据,根据返回的类型常量映射扩展名:
$url = 'https://picsum.photos/200/200?random=61081'; $imageInfo = getimagesize($url); $extMap = [ IMAGETYPE_JPEG => 'jpg', IMAGETYPE_PNG => 'png', IMAGETYPE_GIF => 'gif' ]; $extension = $extMap[$imageInfo[2]] ?? 'unknown'; echo $extension;
内容的提问来源于stack exchange,提问作者panthro
相关产品推荐
相关产品推荐

