当我尝试像这样获取图像大小时
$size=getimagesize(realpath('http://www.index.hr/images2/ivandžaferovic-fejs.jpg'));
它说:
警告: getimagesize(http://www.index.hr/images2/ivandžaferovic-fejs.jpg) [function.getimagesize]:无法打开流:HTTP 请求失败! HTTP/1.0 400 错误请求 测试.php在第 4 行 -布尔(假)
这是因为图片中的"ž"字符。 没有它,函数确实有效。怎么办
如果你对文件名进行编码,它就可以工作:
$size = getimagesize('http://www.index.hr/images2/'.urlencode('ivandžaferovic-fejs.jpg'));
print_r($size);
带有路径信息的更多动态示例:
$url = pathinfo('http://www.index.hr/images2/ivandžaferovic-fejs.jpg');
$size = getimagesize($url['dirname'].'/'.urlencode($url['basename']));
print_r($size);
另一个parse_url的例子:
$urlArray = parse_url('http://www.portal.com/ResourceManager/GetImage.aspx?imgId=619389&fmtId=99');
$url = ($urlArray['scheme'].'://'.$urlArray['host'].str_replace('%2F', '/', urlencode($urlArray['path'])));
$url .= isset($urlArray['query']) ? '?'.$urlArray['query'] : '';
$size = getimagesize($url);
print_r($size);
在大多数情况下,它应该有效。必须给出方案(http,https等),否则parse_url
将不包含host
,而仅包含path
数组键。因此,要构建一个通用且完美的解决方案,您必须花费更多时间(编写更多代码)来解析 url。