我需要用户图像作为PHP中的图像对象 显而易见的选择是执行以下操作:
$url = 'https://graph.facebook.com/'.$fb_id.'/picture?type=large';
$img = imagecreatefromjpeg($url);
这可以在我的测试服务器上运行,但不能在服务器上运行,这个脚本应该最终运行(allow_url_fopen在那里关闭)。
所以我试图通过curl获取图像:
function LoadJpeg($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
$fileContents = curl_exec($ch);
curl_close($ch);
$img = imagecreatefromstring($fileContents);
return $img;
}
$url = 'https://graph.facebook.com/'.$fb_id.'/picture?type=large';
$img = LoadJpeg($url);
然而,这与
有人可以告诉我为什么或告诉我如何实现我想做的事情吗?
答案 0 :(得分:3)
你必须设置
curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,true);
通过这种方式,您可以找到图像 没有它你会得到一个没有图像的302响应代码,因为它位于响应头的字段“url”中设置的另一个位置。答案 1 :(得分:1)
allow_url_fopen
欺骗它... ...
// spoofing Chrome
$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, wie z. B. Gecko) Chrome/13.0.782.215 Safari/525.13.";
$ch = curl_init();
// set user agent
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
// set the rest of your cURL options here
我没有提到这违反了他们的服务条款,可能会导致法律问题,对吗?另外,请务必遵循robots.txt
!