2016-09-20 4 views
0

Ich mache einen Code, der Original Facebook-Bilder von meiner Facebook-Seite herunterlädt, sie ausschneidet und sowohl das Original als auch das zugeschnittene Bild speichert, indem Image :: make ($ url) verwendet wird.Laravel Intervention Image und Facebook Bilder

Das Problem tritt auf, wenn der Code versucht, ein Bild von einem freigegebenen Beitrag zu erhalten. URLs zu Bildern, die ich hochgeladen habe, sehen in etwa so aus: "https://scontent.xx.fbcdn.net/v/t1.0-9/p720x720/xxxxxx_xxxxxx_xxxxxxx_n.jpg?oh=xxxxxx" Wohingegen URLs zu Bildern von geteilten Beiträge wie folgt aussehen: "https://external.xx.fbcdn.net/safe_image.php?d=blablabla".

Der Versuch, Image :: make ($ url) auf dem Link external.xx.blabla auszuführen, führt dazu, dass "Init aus gegebenen Binärdaten nicht initialisiert werden kann".

Das seltsamste daran ist, wenn ich die gleiche Verknüpfung, die wirft und Fehler, fügen Sie es in meinem Browser und sehen Sie das Bild und dann den Code erneut ausführen, nun, dann schneidet es aus und speichert das Bild. Ich habe keine Ahnung, was los ist.

Muss ich wirklich alle externen Bilder sehen, bevor es funktioniert?

Antwort

0

make() akzeptiert viele Quellen, wie z. B. images urls, binary oder base64 data. Da deine zweite URL mit .php endet, denke ich, dass sie die Bibliothek abwerfen könnte. Versuchen Sie stattdessen folgendes:

+0

Nachdem er, statt in, es "Bildquelle nicht lesbar" jetzt zurückgibt. Ich habe jedoch versucht, die Intervention-Ausnahme zu erfassen, und habe dann gerade eine print_r ($ e) darauf geschrieben. Stellt sich heraus, ich bekomme einen "Browser nicht unterstützt" von Facebook. Es könnte also etwas mit useragent zu tun haben, obwohl ich mir nicht sicher bin, wie ich das Useragent einstellen soll, wenn ich Bilder über Image :: make() anfordere –

0

User-Agent war das Problem von Facebook scheint es.

änderte ich

Image::make($url); 

zu

Image::make(file_get_contents($url)) 

und ich fügte dann

$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)) 
Verwandte Themen