2016-04-23 69 views
0

這是我到目前爲止已經試過:PHP cURL如何獲得圖像寬度?

$h = curl_init(); 
$headers = array(
"Range: bytes=0-700" 
); 
curl_setopt($h, CURLOPT_URL, $url); 
curl_setopt($h, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($h, CURLOPT_RETURNTRANSFER, 1); //return the image value 

$mh = curl_multi_init(); 
curl_multi_add_handle($mh, $h); 

$running = null; 
do { 
    curl_multi_exec($mh, $running); 
} while ($running > 0); 

$raw = curl_multi_getcontent($h); 
$im = imagecreatefromstring($raw); 



$width = imagesx($im); 
    $height = imagesy($im); 


var_dump($width); 

我得到這個錯誤,每當我運行代碼:

> (!) Warning: imagecreatefromstring(): Data is not in a recognized 
> format in 
> C:\wamp\www\......funcs.php on 
> line 399 Call Stack 
> # Time Memory Function Location 1 0.0022 294120 {main}() ..\... 

如果你var_dump($raw)它說:

string '<html> 

<head><title>302 Found</title></head> 

<body bgcolor="white"> 

<center><h1>302 Found</h1></center> 

<hr><center>BSWS/2.1</center> 

</body> 

</html> 

' (length=157) 

有什麼事情成爲問題...我花了6個多小時試圖解決問題...請幫助。謝謝

回答

3

它看起來像你正從服務器接收重定向,cURL將這個作爲內容而不是圖像本身。嘗試使用CURLOPT_FOLLOWLOCATION選項。

所以:

curl_setopt($h, CURLOPT_URL, $url); 
curl_setopt($h, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($h, CURLOPT_RETURNTRANSFER, 1); //return the image value 

變爲:

curl_setopt($h, CURLOPT_URL, $url); 
curl_setopt($h, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($h, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($h, CURLOPT_RETURNTRANSFER, 1); //return the image value 

爲捲曲這裏的選項全部列表:http://php.net/manual/en/function.curl-setopt.php

HTH

+0

謝謝!! ......原來如此! –

相關問題