Laravel干预图像和Facebook图像

时间:2016-09-20 07:58:31

标签: facebook image laravel intervention

我正在制作一个代码,从我的Facebook网站下载原始Facebook图像,使用Image :: make($ url)裁剪它们并保存原始图像和裁剪图像。

当代码尝试从共享帖子中获取图像时,会出现问题。 我上传的图片的网址如下所示:" https://scontent.xx.fbcdn.net/v/t1.0-9/p720x720/xxxxxx_xxxxxx_xxxxxxx_n.jpg?oh=xxxxxx" 而来自共享帖子的图片的网址如下所示:" https://external.xx.fbcdn.net/safe_image.php?d=blablabla"。

尝试在external.xx.blabla链接上运行Image :: make($ url)抛出"无法从给定的二进制数据初始化。"

最奇怪的是,如果我使用相同的链接抛出错误,将其粘贴到我的浏览器中并查看图像,然后再次运行代码,然后裁剪并保存图像。我不知道发生了什么。

我真的必须先查看所有外部图像吗?

2 个答案:

答案 0 :(得分:0)

make()接受许多来源,例如图片网址,二进制或base64数据。由于你的第二个网址以.php结尾,我认为它可能会把图书馆关掉。尝试这样的事情:

$img = Image::make(file_get_contents('https://external.xx.fbcdn.net/safe_image.php?d=blablabla'));

答案 1 :(得分:0)

用户代理似乎是来自Facebook的问题。

我改变了

Image::make( $url );

Image::make( file_get_contents( $url ) )

然后我添加了

$options = array( 'http' => array( 'header' => "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n" ) );
$context = stream_context_create( $options );
$img = Image::make( file_get_contents( $attachments->media->image->src, false, $context ) );
$img = Image::make( file_get_contents( $url, false, $context ) )