{"id":232996,"date":"2023-02-03T18:44:00","date_gmt":"2023-02-03T15:44:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232996"},"modified":"2023-02-08T13:08:22","modified_gmt":"2023-02-08T10:08:22","slug":"hur-komprimerar-man-bilder-med-imagerecycle-api-php-skriptet","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/hur-komprimerar-man-bilder-med-imagerecycle-api-php-skriptet\/","title":{"rendered":"Hur komprimerar man bilder med ImageRecycle API (PHP-skriptet)?"},"content":{"rendered":"\n<p><a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> tillhandah\u00e5ller <a href=\"https:\/\/helloacm.com\/how-to-invoke-apis-the-javascriptajax-example\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">API<\/a> :er f\u00f6r att l\u00e4gga till bild\/pdf, komprimera dem och ladda ner dem. Detta g\u00f6r saker intressanta, s\u00e5 i grunden, nuf\u00f6rtiden, vill jag f\u00f6rminska bilder f\u00f6r att minska utrymmet de tar p\u00e5 <a href=\"https:\/\/helloacm.com\/ping-when-vpsdedicate-server-is-restarting\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">VPS-servern<\/a>. <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> st\u00f6der optimering av f\u00f6ljande filtill\u00e4gg: 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=\"Hur komprimerar man bilder med ImageRecycle API (PHP-skriptet)?\"><\/a><\/p>\n<p>bild\u00e5tervinning<\/p>\n<p>H\u00e4r \u00e4r API-dokumentationen f\u00f6r att <a href=\"https:\/\/www.imagerecycle.com\/image-and-pdf-compression-api#api-Images-postImage\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l\u00e4gga till en ny bild<\/a>. <strong>POST \/bilder<\/strong><\/p>\n<p>Exempel:<\/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>Om en lokal fil anges ist\u00e4llet m\u00e5ste du anv\u00e4nda f\u00f6ljande syntax:<\/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>Och h\u00e4r \u00e4r hj\u00e4lpen fr\u00e5n <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> supportteam. Tack f\u00f6r snabba svar:<\/p>\n<blockquote>\n<p>Om du vill skicka en bild som \u00e4r lagrad p\u00e5 din server \u00e4r det inte en enkel POST-fr\u00e5ga, du beh\u00f6ver skicka en POST-fr\u00e5ga med inneh\u00e5llstypen multipart\/form-data.<br \/>\nMed curl kan du g\u00f6ra det genom att anv\u00e4nda alternativet -F ist\u00e4llet f\u00f6r alternativet -d.<br \/>\nDu m\u00e5ste ocks\u00e5 ange med parametern \u00e4r en fil genom att anv\u00e4nda ett @ f\u00f6re filnamnet.<br \/>\nOm du vill ha mer information finns det dokumenterat p\u00e5 curlmansidan som finns tillg\u00e4nglig online: <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>H\u00e4r \u00e4r kommandoraden du b\u00f6r anv\u00e4nda:<\/p>\n<p>curl -X POST -F &#8217;auth={&quot;nyckel&#8221;:&#8221;din_api_nyckel&#8221;,,&#8221;secret&#8221;:&#8221;din_api_hemlighet&#8221;}&#8217; -F &#8217;file=@filen_att_s\u00e4nda.png&#8217; -F &#8217;params={&#8221;komprimeringstyp&#8221;:&#8221;f\u00f6rlust&#8221; }&#8217; &#8217; <a href=\"https:\/\/api.imagerecycle.com\/v1\/images\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/api.imagerecycle.com\/v1\/images<\/a> &#8217;<\/p>\n<p>Du kan anv\u00e4nda parametrarna<br \/>\n\u2013 compression_type&#8221;:&#8221;lossy&#8221; eller compression_type&#8221;:&#8221;lossless&#8221; f\u00f6r f\u00f6rlustfri eller f\u00f6rlustfri komprimering<br \/>\n\u2013 &#8221;resize&#8221;:{&#8221;width&#8221;:100,&#8221;height&#8221;:100} f\u00f6r att \u00e4ndra storlek p\u00e5 bilden, om det beh\u00f6vs, kan endast ange med eller h\u00f6jd<\/p>\n<p>I det h\u00e4r fallet skulle beg\u00e4ran vara:<\/p>\n<p>curl -X POST -F &#8217;auth={&#8221;nyckel&#8221;:&#8221;din_api_nyckel&#8221;,,&#8221;secret&#8221;:&#8221;din_api_hemlighet&#8221;}&#8217; -F &#8217;file=@filen_att_s\u00e4nda.png&#8217; -F &#8217;params={&#8221;komprimeringstyp&#8221;:&#8221;f\u00f6rlust&#8221; ,&#8221;resize&#8221;:{&#8221;width&#8221;:100,&#8221;height&#8221;:100} }&#8217; &#8217; <a href=\"https:\/\/api.imagerecycle.com\/v1\/images\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/api.imagerecycle.com\/v1\/images<\/a> &#8217;<\/p>\n<\/blockquote>\n<p>S\u00e5 vi kan skriva ett <a href=\"https:\/\/helloacm.com\/php-script-to-test-crontab\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP-skript<\/a>, som att f\u00f6lja f\u00f6r att optimera de lokala bilderna (krympa filstorleken utan att r\u00f6ra vid dimensionerna eller bilderna eller <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>POST den lokala bilden\/pdf-filen till <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> -servern med POST \/images API<\/li>\n<li>Byt namn p\u00e5 den lokala bilden\/pdf-filen f\u00f6r att ha en s\u00e4kerhetskopia<\/li>\n<li>Ladda ner den komprimerade filen fr\u00e5n <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a><\/li>\n<\/ol>\n<p>H\u00e4r \u00e4r sk\u00e4rmdumpen, se till att du byter ut app_key och 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=\"Hur komprimerar man bilder med ImageRecycle API (PHP-skriptet)?\"><\/a><\/p>\n<p>imagerecycle-image-compression<\/p>\n<p>Och servern bekr\u00e4ftar denna optimering fr\u00e5n panelen [Optimization 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=\"Hur komprimerar man bilder med ImageRecycle API (PHP-skriptet)?\"><\/a><\/p>\n<p>imagerecycle-image-compression-history<\/p>\n<p>Jag har en test.jpg som \u00e4r optimerad fr\u00e5n 1,7M till 1,6M. Det kanske inte \u00e4r mycket och om jag v\u00e4ljer andra inst\u00e4llningar kan det ge mig fler besparingar (som att \u00e4ndra storlek). [Jag kommer att skriva <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/jaemfoera-imagerecycle-och-imagfy-vilket-aer-baettre\/\" title=\"ytterligare ett inl\u00e4gg\">ytterligare ett inl\u00e4gg<\/a> om att recensera <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> och andra konkurrenter som <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/anvaenda-imagify-wordpress-plugin-foer-att-minska-storleken-paa-bilder\/\" title=\"Imagefy\">Imagefy<\/a>.<\/p>\n<p>Den fullst\u00e4ndiga k\u00e4llkoden:<\/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>Sedan har du k\u00f6rt en <a href=\"https:\/\/helloacm.com\/bash-for-loops\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">bash-loop<\/a> f\u00f6r att iterera alla bilder\/ <a href=\"https:\/\/helloacm.com\/markdown-markup-language-quick-tutorial\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PDF<\/a>, vilket borde ge dig omedelbar besparing.<\/p>\n<p>Jag har lyckats <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\">spara \u00f6ver 2GB<\/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> utrymme p\u00e5 VPS med ovanst\u00e5ende skript.<\/p>\n<p>G\u00e5 med <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">i ImageRecycle<\/a> och anv\u00e4nd kupongen <strong><a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">IR-PARTNER-20<\/a><\/strong> f\u00f6r att f\u00e5 20 % rabatt p\u00e5 f\u00f6rsta fakturan, exklusivt f\u00f6r mina l\u00e4sare!<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hur komprimerar man bilder med ImageRecycle API (PHP-skriptet)?<\/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":[838,848,901,755,922,724,868],"tags":[1173],"class_list":["post-232996","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-handledningar","category-koda","category-oeppen-kaella","category-oevrig","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/232996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=232996"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/232996\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/224801"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=232996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=232996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=232996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}