{"id":234158,"date":"2023-02-03T18:57:00","date_gmt":"2023-02-03T15:57:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234158"},"modified":"2023-02-08T13:28:23","modified_gmt":"2023-02-08T10:28:23","slug":"comment-compresser-des-images-a-laide-de-lapi-imagerecycle-le-script-php","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/comment-compresser-des-images-a-laide-de-lapi-imagerecycle-le-script-php\/","title":{"rendered":"Comment compresser des images \u00e0 l&rsquo;aide de l&rsquo;API ImageRecycle (le script PHP)\u00a0?"},"content":{"rendered":"\n<p><a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> fournit des <a href=\"https:\/\/helloacm.com\/how-to-invoke-apis-the-javascriptajax-example\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">API<\/a> pour ajouter des images\/pdf, les compresser et les t\u00e9l\u00e9charger. Cela rend les choses int\u00e9ressantes, donc fondamentalement, ces jours-ci, je veux r\u00e9duire les images pour r\u00e9duire l&rsquo;espace qu&rsquo;elles occupent sur le <a href=\"https:\/\/helloacm.com\/ping-when-vpsdedicate-server-is-restarting\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">serveur VPS<\/a>. <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> prend en charge l&rsquo;optimisation des extensions de fichiers suivantes: JPEG\/JPG, GIF, BMP, PNG, PDF.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155144-61e556a536cd0.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155144-61e556a536cd0.png\" alt=\"Comment compresser des images \u00e0 l&#039;aide de l&#039;API ImageRecycle (le script PHP)\u00a0?\"><\/a><\/p>\n<p>imagerecycle<\/p>\n<p>Voici la documentation de l&rsquo;API pour <a href=\"https:\/\/www.imagerecycle.com\/image-and-pdf-compression-api#api-Images-postImage\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ajouter une nouvelle image<\/a>. <strong>POSTE \/images<\/strong><\/p>\n<p>Exemple:<\/p>\n<pre><code>\u00a0 curl -X POST \n\u00a0 \u00a0 -d 'auth={\"key\":\"your_api_key\",\"secret\":\"your_api_secret\"}' \n\u00a0 \u00a0 -d 'url=&lt;a class=\"vglnk\" target=\"_blank\" href=\"https:\/\/uploadbeta.com\/share-image\/2xw\" rel=\"nofollow\"&gt;&lt;span&gt;https&lt;\/span&gt;&lt;span&gt;:\/\/&lt;\/span&gt;&lt;span&gt;uploadbeta&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;com&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;span&gt;share&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;image&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;span&gt;2xw&lt;\/span&gt;&lt;\/a&gt;' \n\u00a0 \u00a0 -d 'params={\"compression_type\":\"lossy\"}' \n\u00a0 \u00a0 '&lt;a class=\"vglnk\" target=\"_blank\" href=\"https:\/\/api.imagerecycle.com\/v1\/images\" rel=\"nofollow\"&gt;&lt;span&gt;https&lt;\/span&gt;&lt;span&gt;:\/\/&lt;\/span&gt;&lt;span&gt;api&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;imagerecycle&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;com&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;span&gt;v1&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;span&gt;images&lt;\/span&gt;&lt;\/a&gt;'<\/code><\/pre>\n<p>Si un fichier local est sp\u00e9cifi\u00e9 \u00e0 la place, vous devez utiliser la syntaxe suivante\u00a0:<\/p>\n<pre><code>\u00a0 curl -X POST \n\u00a0 \u00a0 -F 'auth={\"key\":\"your_api_key\",\"secret\":\"your_api_secret\"}' \n\u00a0 \u00a0 -F 'file=@local_file.jpg' \n\u00a0 \u00a0 -F 'params={\"compression_type\":\"lossy\"}' \n\u00a0 \u00a0 '&lt;a class=\"vglnk\" target=\"_blank\" href=\"https:\/\/api.imagerecycle.com\/v1\/images\" rel=\"nofollow\"&gt;&lt;span&gt;https&lt;\/span&gt;&lt;span&gt;:\/\/&lt;\/span&gt;&lt;span&gt;api&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;imagerecycle&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;com&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;span&gt;v1&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;span&gt;images&lt;\/span&gt;&lt;\/a&gt;'<\/code><\/pre>\n<p>Et voici l&rsquo;aide de l&rsquo;\u00e9quipe d&rsquo;assistance d&rsquo; <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a>. Merci pour les r\u00e9ponses rapides\u00a0:<\/p>\n<blockquote>\n<p>Si vous souhaitez envoyer une image stock\u00e9e sur votre serveur, ce n&rsquo;est pas une simple requ\u00eate POST, vous devez envoyer une requ\u00eate POST avec le type de contenu multipart\/form-data.<br \/>\nAvec curl, vous pouvez le faire en utilisant l&rsquo;option -F au lieu de l&rsquo;option -d.<br \/>\nVous devez \u00e9galement sp\u00e9cifier avec le param\u00e8tre est un fichier en utilisant un @ avant le nom du fichier.<br \/>\nSi vous voulez plus d&rsquo;informations, c&rsquo;est document\u00e9 sur la page de manuel curl disponible en ligne: <a href=\"https:\/\/curl.haxx.se\/docs\/manpage.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/curl.haxx.se\/docs\/manpage.html<\/a><\/p>\n<p>Voici la ligne de commande que vous devez utiliser :<\/p>\n<p>curl -X POST -F &lsquo;auth={\u00ab\u00a0key&quot;:&quot;your_api_key\u00a0\u00bb,\u00a0\u00bbsecret\u00a0\u00bb:\u00a0\u00bbyour_api_secret\u00a0\u00bb}&rsquo; -F &lsquo;file=@the_file_to_send.png&rsquo; -F &lsquo;params={\u00ab\u00a0compression_type\u00a0\u00bb:\u00a0\u00bblossy\u00a0\u00bb }&rsquo; &lsquo; <a href=\"https:\/\/api.imagerecycle.com\/v1\/images\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/api.imagerecycle.com\/v1\/images<\/a> &lsquo;<\/p>\n<p>Vous pouvez utiliser les param\u00e8tres<br \/>\n&#8211; compression_type&quot;:&quot;lossy&quot; ou compression_type&quot;:&quot;lossless&quot; pour une compression sans perte ou avec perte<br \/>\n&#8211; &quot;resize&quot;:{&quot;width&quot;:100,&quot;height&quot;:100} pour redimensionner si n\u00e9cessaire l&rsquo;image, vous peut sp\u00e9cifier uniquement avec ou hauteur<\/p>\n<p>Dans ce cas la requ\u00eate serait :<\/p>\n<p>curl -X POST -F &lsquo;auth={\u00ab\u00a0key\u00a0\u00bb:\u00a0\u00bbyour_api_key\u00a0\u00bb,\u00a0\u00bbsecret\u00a0\u00bb:\u00a0\u00bbyour_api_secret\u00a0\u00bb}&rsquo; -F &lsquo;file=@the_file_to_send.png&rsquo; -F &lsquo;params={\u00ab\u00a0compression_type\u00a0\u00bb:\u00a0\u00bblossy\u00a0\u00bb ,&quot;resize&quot;:{&quot;width&quot;:100,&quot;height&quot;:100} }&rsquo; &lsquo; <a href=\"https:\/\/api.imagerecycle.com\/v1\/images\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/api.imagerecycle.com\/v1\/images<\/a> &lsquo;<\/p>\n<\/blockquote>\n<p>Ainsi, nous pouvons \u00e9crire un <a href=\"https:\/\/helloacm.com\/php-script-to-test-crontab\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP Script<\/a>, comme suit pour optimiser les images locales (r\u00e9duire la taille du fichier sans toucher aux dimensions ni aux images ni au <a href=\"https:\/\/helloacm.com\/how-to-put-signature-on-pdf-documentfile\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PDF<\/a> ).<\/p>\n<ol>\n<li>POSTez l&rsquo;image\/pdf local sur le serveur <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> \u00e0 l&rsquo;aide de l&rsquo;API POST \/images<\/li>\n<li>Renommez l&rsquo;image\/pdf locale pour avoir une sauvegarde<\/li>\n<li>T\u00e9l\u00e9chargez le fichier compress\u00e9 depuis <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a><\/li>\n<\/ol>\n<p>Voici la capture d&rsquo;\u00e9cran, assurez-vous de remplacer app_key et app_seret.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155144-61e556a68413d.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155144-61e556a68413d.jpg\" alt=\"Comment compresser des images \u00e0 l&#039;aide de l&#039;API ImageRecycle (le script PHP)\u00a0?\"><\/a><\/p>\n<p>imagerecycle-image-compression<\/p>\n<p>Et le serveur confirme cette optimisation depuis le panneau [Optimisation History].<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155144-61e556a7b5094.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155144-61e556a7b5094.jpg\" alt=\"Comment compresser des images \u00e0 l&#039;aide de l&#039;API ImageRecycle (le script PHP)\u00a0?\"><\/a><\/p>\n<p>imagerecycle-image-compression-history<\/p>\n<p>J&rsquo;ai un test.jpg qui est optimis\u00e9 de 1,7M \u00e0 1,6M. Ce n&rsquo;est peut-\u00eatre pas beaucoup et si je choisis d&rsquo;autres param\u00e8tres, cela pourrait me faire plus d&rsquo;\u00e9conomies (comme le redimensionnement). [J&rsquo;\u00e9crirai <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/comparaison-dimagerecycle-et-dimagfy-quel-est-le-meilleur\/\" title=\"un autre article\">un autre article<\/a> sur l&rsquo;examen d&rsquo; <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> et d&rsquo;autres concurrents tels que <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/utilisation-du-plugin-imagify-wordpress-pour-reduire-la-taille-des-images\/\" title=\"Imagefy\">Imagefy<\/a>.<\/p>\n<p>Le code source complet\u00a0:<\/p>\n<pre><code>#!\/usr\/bin\/php\n&lt;?php\n\/\/ Author: \u00a0&lt;a class=\"vglnk\" target=\"_blank\" href=\"https:\/\/helloacm.com\" rel=\"nofollow\"&gt;&lt;span&gt;https&lt;\/span&gt;&lt;span&gt;:\/\/&lt;\/span&gt;&lt;span&gt;helloacm&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;com&lt;\/span&gt;&lt;\/a&gt;\n\u00a0 $key = \"app_key\";\n\u00a0 $secret = \"app_secret\";\n\u00a0 \n\u00a0 function ImageRecycle($img, $key, $secret) { \u00a0\n\u00a0 \u00a0 $cmd = \"curl -X POST -F 'auth={\"key\":\"$key\",\"secret\":\"$secret\"}' -F 'file=@$img' -F 'params={\"compression_type\":\"lossy\"}' '&lt;a class=\"vglnk\" target=\"_blank\" href=\"https:\/\/api.imagerecycle.com\/v1\/images\" rel=\"nofollow\"&gt;&lt;span&gt;https&lt;\/span&gt;&lt;span&gt;:\/\/&lt;\/span&gt;&lt;span&gt;api&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;imagerecycle&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;com&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;span&gt;v1&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;span&gt;images&lt;\/span&gt;&lt;\/a&gt;'\";\n\u00a0 \u00a0 echo $cmd. \"n\"; \u00a0 \u00a0\n\u00a0 \u00a0 $rtn = json_decode(shell_exec($cmd), true);\n\u00a0 \u00a0 var_dump($rtn);\n\u00a0 \u00a0 $err = 201;\n\u00a0 \u00a0 if (isset($rtn['errCode'])) {\n\u00a0 \u00a0 \u00a0 $err = (integer)$rtn['errCode'];\n\u00a0 \u00a0 }\n\u00a0 \u00a0 $id = 0;\n\u00a0 \u00a0 if (isset($rtn['id'])) {\n\u00a0 \u00a0 \u00a0 $id = (integer)$rtn['id'];\n\u00a0 \u00a0 }\n\u00a0 \u00a0 if (($err == 201) || ($id &gt; 0)) {\n\u00a0 \u00a0 \u00a0 $optimized_url = $rtn['optimized_url'];\n\u00a0 \u00a0 \u00a0 if (strlen($optimized_url)) {\n\u00a0 \u00a0 \u00a0 \u00a0 echo \"Renaming original $img to ${img}_original n\";\n\u00a0 \u00a0 \u00a0 \u00a0 rename($img, $img.\"_original\");\n\u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 echo \"Downloading $optimized_url ...n\";\n\u00a0 \u00a0 \u00a0 $optimized_content = file_get_contents($optimized_url);\n\u00a0 \u00a0 \u00a0 echo \"Saving optimised to $img ...n\";\n\u00a0 \u00a0 \u00a0 file_put_contents($img, $optimized_content); \u00a0 \u00a0 \u00a0\n\u00a0 \u00a0 }\n\u00a0 } \u00a0\n\u00a0 \n\u00a0 foreach (array_slice($argv, 1) as $img) {\n\u00a0 \u00a0 if (!file_exists($img)) {\n\u00a0 \u00a0 \u00a0 echo $img. \" not found.n\";\n\u00a0 \u00a0 } else {\n\u00a0 \u00a0 \u00a0 ImageRecycle($img, $key, $secret);\n\u00a0 \u00a0 }\n\u00a0 } <\/code><\/pre>\n<p>Ensuite, vous avez ex\u00e9cut\u00e9 une <a href=\"https:\/\/helloacm.com\/bash-for-loops\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">boucle bash<\/a> pour it\u00e9rer toutes les images\/ <a href=\"https:\/\/helloacm.com\/markdown-markup-language-quick-tutorial\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PDF<\/a>, ce qui devrait vous donner une sauvegarde instantan\u00e9e.<\/p>\n<p>J&rsquo;ai r\u00e9ussi \u00e0 <a href=\"https:\/\/helloacm.com\/case-study-use-imagerecycle-to-save-over-2gb-storage-on-vps\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00e9conomiser plus de 2 Go d&rsquo;espace<\/a> <a href=\"https:\/\/helloacm.com\/programmers-should-use-ssd-change-hdd-of-lenovo-laptop-to-1tb-ssd-samsung\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">SSD<\/a> sur VPS en utilisant le script ci-dessus.<\/p>\n<p>Rejoignez <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> et utilisez le coupon <strong><a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">IR-PARTNER-20<\/a><\/strong> pour obtenir 20\u00a0% de r\u00e9duction sur la premi\u00e8re facture, exclusif pour mes lecteurs\u00a0!<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comment compresser des images \u00e0 l&rsquo;aide de l&rsquo;API ImageRecycle (le script PHP)\u00a0?<\/p>\n","protected":false},"author":1,"featured_media":224801,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[915,893,717,832,748,841,862],"tags":[1167],"class_list":["post-234158","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","category-code-2","category-developpeur","category-guide-pour-les-debutants","category-open-source-projektmanagement-2","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=234158"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234158\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/224801"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=234158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=234158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=234158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}