Comment compresser des images à l’aide de l’API ImageRecycle (le script PHP) ?
ImageRecycle fournit des API pour ajouter des images/pdf, les compresser et les télécharger. Cela rend les choses intéressantes, donc fondamentalement, ces jours-ci, je veux réduire les images pour réduire l’espace qu’elles occupent sur le serveur VPS. ImageRecycle prend en charge l’optimisation des extensions de fichiers suivantes: JPEG/JPG, GIF, BMP, PNG, PDF.
imagerecycle
Voici la documentation de l’API pour ajouter une nouvelle image. POSTE /images
Exemple:
curl -X POST
-d 'auth={"key":"your_api_key","secret":"your_api_secret"}'
-d 'url=<a class="vglnk" target="_blank" href="https://uploadbeta.com/share-image/2xw" rel="nofollow"><span>https</span><span>://</span><span>uploadbeta</span><span>.</span><span>com</span><span>/</span><span>share</span><span>-</span><span>image</span><span>/</span><span>2xw</span></a>'
-d 'params={"compression_type":"lossy"}'
'<a class="vglnk" target="_blank" href="https://api.imagerecycle.com/v1/images" rel="nofollow"><span>https</span><span>://</span><span>api</span><span>.</span><span>imagerecycle</span><span>.</span><span>com</span><span>/</span><span>v1</span><span>/</span><span>images</span></a>'
Si un fichier local est spécifié à la place, vous devez utiliser la syntaxe suivante :
curl -X POST
-F 'auth={"key":"your_api_key","secret":"your_api_secret"}'
-F 'file=@local_file.jpg'
-F 'params={"compression_type":"lossy"}'
'<a class="vglnk" target="_blank" href="https://api.imagerecycle.com/v1/images" rel="nofollow"><span>https</span><span>://</span><span>api</span><span>.</span><span>imagerecycle</span><span>.</span><span>com</span><span>/</span><span>v1</span><span>/</span><span>images</span></a>'
Et voici l’aide de l’équipe d’assistance d’ ImageRecycle. Merci pour les réponses rapides :
Si vous souhaitez envoyer une image stockée sur votre serveur, ce n’est pas une simple requête POST, vous devez envoyer une requête POST avec le type de contenu multipart/form-data.
Avec curl, vous pouvez le faire en utilisant l’option -F au lieu de l’option -d.
Vous devez également spécifier avec le paramètre est un fichier en utilisant un @ avant le nom du fichier.
Si vous voulez plus d’informations, c’est documenté sur la page de manuel curl disponible en ligne: http://curl.haxx.se/docs/manpage.htmlVoici la ligne de commande que vous devez utiliser :
curl -X POST -F ‘auth={« key":"your_api_key », »secret »: »your_api_secret »}’ -F ‘file=@the_file_to_send.png’ -F ‘params={« compression_type »: »lossy » }’ ‘ https://api.imagerecycle.com/v1/images ‘
Vous pouvez utiliser les paramètres
– compression_type":"lossy" ou compression_type":"lossless" pour une compression sans perte ou avec perte
– "resize":{"width":100,"height":100} pour redimensionner si nécessaire l’image, vous peut spécifier uniquement avec ou hauteurDans ce cas la requête serait :
curl -X POST -F ‘auth={« key »: »your_api_key », »secret »: »your_api_secret »}’ -F ‘file=@the_file_to_send.png’ -F ‘params={« compression_type »: »lossy » ,"resize":{"width":100,"height":100} }’ ‘ https://api.imagerecycle.com/v1/images ‘
Ainsi, nous pouvons écrire un PHP Script, comme suit pour optimiser les images locales (réduire la taille du fichier sans toucher aux dimensions ni aux images ni au PDF ).
- POSTez l’image/pdf local sur le serveur ImageRecycle à l’aide de l’API POST /images
- Renommez l’image/pdf locale pour avoir une sauvegarde
- Téléchargez le fichier compressé depuis ImageRecycle
Voici la capture d’écran, assurez-vous de remplacer app_key et app_seret.
imagerecycle-image-compression
Et le serveur confirme cette optimisation depuis le panneau [Optimisation History].
imagerecycle-image-compression-history
J’ai un test.jpg qui est optimisé de 1,7M à 1,6M. Ce n’est peut-être pas beaucoup et si je choisis d’autres paramètres, cela pourrait me faire plus d’économies (comme le redimensionnement). [J’écrirai un autre article sur l’examen d’ ImageRecycle et d’autres concurrents tels que Imagefy.
Le code source complet :
#!/usr/bin/php
<?php
// Author: <a class="vglnk" target="_blank" href="https://helloacm.com" rel="nofollow"><span>https</span><span>://</span><span>helloacm</span><span>.</span><span>com</span></a>
$key = "app_key";
$secret = "app_secret";
function ImageRecycle($img, $key, $secret) {
$cmd = "curl -X POST -F 'auth={"key":"$key","secret":"$secret"}' -F 'file=@$img' -F 'params={"compression_type":"lossy"}' '<a class="vglnk" target="_blank" href="https://api.imagerecycle.com/v1/images" rel="nofollow"><span>https</span><span>://</span><span>api</span><span>.</span><span>imagerecycle</span><span>.</span><span>com</span><span>/</span><span>v1</span><span>/</span><span>images</span></a>'";
echo $cmd. "n";
$rtn = json_decode(shell_exec($cmd), true);
var_dump($rtn);
$err = 201;
if (isset($rtn['errCode'])) {
$err = (integer)$rtn['errCode'];
}
$id = 0;
if (isset($rtn['id'])) {
$id = (integer)$rtn['id'];
}
if (($err == 201) || ($id > 0)) {
$optimized_url = $rtn['optimized_url'];
if (strlen($optimized_url)) {
echo "Renaming original $img to ${img}_original n";
rename($img, $img."_original");
}
echo "Downloading $optimized_url ...n";
$optimized_content = file_get_contents($optimized_url);
echo "Saving optimised to $img ...n";
file_put_contents($img, $optimized_content);
}
}
foreach (array_slice($argv, 1) as $img) {
if (!file_exists($img)) {
echo $img. " not found.n";
} else {
ImageRecycle($img, $key, $secret);
}
}
Ensuite, vous avez exécuté une boucle bash pour itérer toutes les images/ PDF, ce qui devrait vous donner une sauvegarde instantanée.
J’ai réussi à économiser plus de 2 Go d’espace SSD sur VPS en utilisant le script ci-dessus.
Rejoignez ImageRecycle et utilisez le coupon IR-PARTNER-20 pour obtenir 20 % de réduction sur la première facture, exclusif pour mes lecteurs !


