web-dev-qa-db-fra.com

Image d'intervention: Enregistrer l'image directement à partir d'une URL avec le nom de fichier d'origine et l'extension?

Comment obtenir le nom de fichier, lors de la prise d'image à partir d'un serveur distant? Et comment enregistrer avec la taille et le nom de fichier d'origine?

// Take remote image
$img = Image::make('http://image.info/demo.jpg');
// how to save in the img/original/demo.jpg
$img->save(????);

J'utilise Intervention, ( http://image.intervention.io/api/make ) pour construire le comportement d'image de CakePHP 3 , Je veux fournir un téléchargement facile à partir de serveurs distants et conserver l'image d'origine comme source pour une manipulation future.

[~ # ~] modifier [~ # ~]

Je demande, y a-t-il la méthode Image d'intervention qui renvoie le nom de le fichier, lorsqu'il est extrait du serveur distant. Je connais php copy (), je peux également utiliser les utilitaires CakePHP File, mais cela me donne la demande en double sur un fichier distant.

13
Salines

response () ne renvoie pas le nom de fichier d'origine comme le demandait Salines. Cela devrait fonctionner

$path = 'https://i.stack.imgur.com/koFpQ.png';
$filename = basename($path);

Image::make($path)->save(public_path('images/' . $filename));
28
F. johns

Vous pouvez facilement le faire en utilisant les méthodes make(); et response();. Vérifiez mon code ci-dessous.

Gardez juste à l'esprit que allow_url_fopen doit être activé pour récupérer une image distante.

Cela affichera ma photo de profil. Si vous ne l'utilisez pas avec Laravel Framework, remplacez simplement return par echo.

$img = Image::make('https://i.stack.imgur.com/koFpQ.png');
header('Content-Type: image/png');
return $img->response();

J'espère que cela aide et vote ma réponse si utile;)

Si vous avez besoin d'aide, demandez.

3
CDF