PHP cURL如何获得图像宽度?

PHP cURL如何获得图像宽度?

问题描述:

这是我到目前为止已经试过: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个多小时试图解决问题...请帮助。谢谢

它看起来像你正从服务器接收重定向,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

谢谢!! ......原来如此! –