PHP cURL 如何获取图片宽度?
PHP cURL How to get image width?
这是我目前尝试过的方法:
$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
这里是 cURL 选项的完整列表:http://php.net/manual/en/function.curl-setopt.php
HTH
这是我目前尝试过的方法:
$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
这里是 cURL 选项的完整列表:http://php.net/manual/en/function.curl-setopt.php
HTH