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 часов, пытаясь решить проблему … Пожалуйста, помогите. Спасибо

0

Решение

Похоже, вы получаете перенаправление с сервера, и 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

НТН

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]