Obtenir à distance de l'image à l'aide de cURL puis resample
Je veux être en mesure de récupérer une image distante à partir d'un serveur web, rééchantillonner, et ensuite de le servir jusqu'à l'navigateur ET de les enregistrer dans un fichier. Voici ce que j'ai à ce jour:
$ch = curl_init();
//set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "$rURL");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//grab URL and pass it to the browser
$out = curl_exec($ch);
//close cURL resource, and free up system resources
curl_close($ch);
$imgRes = imagecreatefromstring($out);
imagejpeg($imgRes, $filename, 70);
header("Content-Type: image/jpg");
imagejpeg($imgRes, NULL, 70);
exit();
Mise à jour
Mis à jour pour refléter la réponse correcte, basées sur la discussion ci-dessous
Vous devez vous connecter pour publier un commentaire.
Vous pouvez extraire le fichier dans un GD de ressources à l'aide de
imagecreatefromstring()
:à partir de là, c'est assez simple à l'aide de imagecopyresampled().
De sortie à l'aide de imagejpeg() ou n'importe quel format de sortie qui vous convient le mieux.
Faire une sortie avec un nom de fichier:
puis envoyer les mêmes ressources pour le navigateur:
en fonction de l'image de format, vous pouvez utiliser le imagepng() ou imagegif() les fonctions de la place.
Vous pouvez travailler avec différents formats de sortie en fonction de l'entrée de type de fichier. Vous pouvez récupérer le fichier d'entrée type à l'aide de getimagesize().
N'oubliez pas que vous pouvez ajuster la résultante d'image JPEG de qualité à l'aide de la
$quality
paramètre. Par défaut est de 75%, ce qui peut paraître assez merdique.readfile
. Justeimagejpeg
une deuxième fois avec le nom de fichier en paramètre ànull
. Il sera de sortie directement dans le navigateur.