2011-12-15 92 views
3

我從facebook上檢索facebook相冊圖像。我使用php函數getimagesize計算圖像大小。當url處於http模式時,此函數工作正常。當Facebook使用https返回圖像url時getimagesize給出error.How我可以計算圖像與https擴展使用getimage大小的圖像大小getimagesize和https

+0

你應該能夠從你的圖片網址中去掉`s`。 – luastoned 2011-12-15 10:17:14

+0

你嘗試用http mannualy替換https嗎?我認爲它會起作用。 – Narek 2011-12-15 10:18:08

回答

4

您沒有安裝在你的PHP實例OpenSSL的擴展,所以https://包裝是無法使用。

From the manual

注:啓用HTTPS OpenSSL的擴展名時,才支持。

And

使用PHP的OpenSSL的支持,還必須在編譯PHP的--with-的OpenSSL [= DIR]。

您將需要使用OpenSSL擴展重新編譯PHP。

或者,正如其他人所建議的那樣,您可以用http://代替https://,這對於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); 
} 

有關的另一點是,直接傳遞到$urlgetimagesize()可能不是在做你想要什麼。對圖像進行處理的唯一可能性不大,您可能會將其顯示在您的網頁上或以其他方式操縱它,如果情況如此,您最終會多次下載它。

您應該將其下載到臨時目錄,然後在其本地副本上工作。

0

我測試了這個,它工作正常。

$url = "https://path/to/image.jpg"; 
$url = str_replace("https://", "http://", $url); 
$size = getimagesize($url); 
1

$newlink = str_replace('https://', 'http://', $oldlink);

我想這可能有助於剝離https://開頭爲http://