Используйте curl, чтобы открыть изображение GD - PullRequest
1 голос
/ 07 февраля 2011

Я хочу добавить несколько водяных знаков на изображение, но это изображение находится на другом сервере, который создан GD lib, это означает, что я открываю URL-адрес как (http://www.abc.com/image.php), однако удаленный сервер отключил allow_url_open, и у меня нет возможности включить это. Так вот мой код с помощью curl

function loadimg($url) {
    $ch = curl_init();

    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_BINARYTRANSFER, true);  
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);  
    curl_setopt ($ch, CURLOPT_HEADER, false);  
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0); 

    $rawdata = curl_exec($ch);
    $image = imagecreatefromstring($rawdata);

    curl_close($ch);

    return imagejpeg($image);
}

И я тестирую с кодом и получаю это

Предупреждение: imagecreatefromstring () [function.imagecreatefromstring]: Данные не находятся в распознанном формате в D: \ AppServ \ www \ index2.php в строке 25

, после этого я проверяю получаемый контент, получаю html-файл, как следует, кажетсяон перенаправляет куда-то, вместо того, чтобы получить изображение, однако, когда я открываю ссылку в браузере, оно действительно показывает изображение правильно.

<head>
<meta http-equiv="refresh" content="0;url=http://ifastnet.com/notify2.html" />
</head>
<html>
<body>
<script LANGUAGE="JavaScript">
window.location="http://ifastnet.com/notify2.html";
</script>
<!-- 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 526 640 917 51 415 140 573 716 965 688 395 829 76 810 801 733 244 95 205 283 488 189 705 173 743 574 947 608 694 973 886 298 223 449 99 309 936 432 209 623 454  399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 526 640 917 51 415 140 573 716 965 688 395 829 76 810 801 733 244 95 205 283 488 189 705 173 743 574 947 608 694 973 886 298 223 449 99 309 936 432 209 623 454 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 526 640 917 51 415 140 573 716 965 688 395 829 76 810 801 733 244 95 205 283 488 189 705 173 743 574 947 608 694 973 886 298 223 449 99 309 936 432 209 623 454 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 526 640 917 51 415 140 573 716 965 688 395 829 76 810 801 733 244 95 205 283 488 189 705 173 743 574 947 608 694 973 886 298 223 449 99 309 936 432 209 623 454 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 399 310 772 188 121 747 908 375 658 989 471 891 842 282 539 788 863 526 640 917 51 415 140 573 716 965 688 395 829 76 810 801 733 244 95 205 283 488 189 705 173 743 574 947 608 694 973 886 298 223 449 99 309 936 432 209 623 454 -->
</body>
</html>

<BR clear="all">
<HR noshade size="1px">
<ADDRESS>
Generated Mon, 07 Feb 2011 18:03:15 GMT by demil1.byetcluster.com (Lusca/LUSCA_HEAD-r14756)
</ADDRESS>
</BODY></HTML>

Пожалуйста, помогите ~ большое спасибо ~!

1 Ответ

0 голосов
/ 12 мая 2011

Вам нужно открыть тип контента для изображений / JPEG, что-то вроде этого:

function loadimg($url) {
    $ch = curl_init();

    curl_setopt ($ch, CURLOPT_URL, $url);    
    curl_setopt ($ch, CURLOPT_BINARYTRANSFER, true);  
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);  
    curl_setopt ($ch, CURLOPT_HEADER, false);  
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0); 

    $rawdata = curl_exec($ch);
    $image = imagecreatefromstring($rawdata);

    curl_close($ch);

    return imagejpeg($image);
}

header('Content-Type: image/jpeg');

loadimg('IMG_URL');

Это должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...