我正在从facebook上检索facebook相册图片。我使用php函数getimagesize计算图像大小。当网址处于http模式时,此功能正常工作。当facebook返回图像网址时使用https geERGize给出错误。如何使用getimage size
计算具有https扩展名的图像的图像尺寸答案 0 :(得分:4)
您的PHP实例中没有安装OpenSSL扩展,因此https://
包装器不可用。
注意:仅在启用openssl扩展时支持HTTPS。
And:
要使用PHP的OpenSSL支持,您还必须编译PHP --with-openssl [= DIR]。
您需要使用OpenSSL扩展重新编译PHP。
或者,正如其他人所建议的那样,您可以将https://
替换为http://
,这对于Facebook图像应该也可以正常工作 - 实际上,它可能更快,并且肯定会带来更高的带宽效率
我会这样做:
$url = 'https://facebook.com/path/to/image.jpg';
$url = trim($url); // Get rid of any accidental whitespace
$parsed = parse_url($url); // analyse the URL
if (isset($parsed['scheme']) && strtolower($parsed['scheme']) == 'https') {
// If it is https, change it to http
$url = 'http://'.substr($url,8);
}
关于这一点的另一点是,将$url
直接传递给getimagesize()
可能不是您想要做的。你不可能对图像做的唯一事情是获得它的大小,你可能会在你的页面上显示它或以其他方式操纵它,如果是这种情况,你最终会不止一次下载它。 / p>
您应该将其下载到临时目录,然后处理它的本地副本。
答案 1 :(得分:1)
$newlink = str_replace('https://', 'http://', $oldlink);
我想这有助于将https://删除到http://
答案 2 :(得分:0)
我对此进行了测试,但效果很好。
$url = "https://path/to/image.jpg";
$url = str_replace("https://", "http://", $url);
$size = getimagesize($url);