{"id":233025,"date":"2023-02-03T19:02:00","date_gmt":"2023-02-03T16:02:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233025"},"modified":"2023-02-08T12:45:28","modified_gmt":"2023-02-08T09:45:28","slug":"jak-kompresowac-obrazy-za-pomoca-interfejsu-api-imagerecycle-skrypt-php","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/jak-kompresowac-obrazy-za-pomoca-interfejsu-api-imagerecycle-skrypt-php\/","title":{"rendered":"Jak kompresowa\u0107 obrazy za pomoc\u0105 interfejsu API ImageRecycle (skrypt PHP)?"},"content":{"rendered":"\n<p><a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> udost\u0119pnia <a href=\"https:\/\/helloacm.com\/how-to-invoke-apis-the-javascriptajax-example\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">interfejsy API<\/a> do dodawania obrazu\/pdfu, kompresji ich i pobierania. To sprawia, \u017ce \u200b\u200b\u200b\u200brzeczy s\u0105 interesuj\u0105ce, wi\u0119c w zasadzie w dzisiejszych czasach chc\u0119 zmniejszy\u0107 obrazy, aby zmniejszy\u0107 miejsce, kt\u00f3re zajmuj\u0105 na <a href=\"https:\/\/helloacm.com\/ping-when-vpsdedicate-server-is-restarting\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">serwerze VPS<\/a>. <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> obs\u0142uguje optymalizacj\u0119 nast\u0119puj\u0105cych rozszerze\u0144 plik\u00f3w: 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=\"Jak kompresowa\u0107 obrazy za pomoc\u0105 interfejsu API ImageRecycle (skrypt PHP)?\"><\/a><\/p>\n<p>przetwarzanie obrazu<\/p>\n<p>Oto dokumentacja API, aby <a href=\"https:\/\/www.imagerecycle.com\/image-and-pdf-compression-api#api-Images-postImage\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">doda\u0107 nowy obraz<\/a>. <strong>POST \/obrazy<\/strong><\/p>\n<p>Przyk\u0142ad:<\/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>Je\u015bli zamiast tego zostanie okre\u015blony plik lokalny, musisz u\u017cy\u0107 nast\u0119puj\u0105cej sk\u0142adni:<\/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>A oto pomoc zespo\u0142u wsparcia <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a>. Dzi\u0119ki za szybkie odpowiedzi:<\/p>\n<blockquote>\n<p>Je\u015bli chcesz wys\u0142a\u0107 obraz przechowywany na serwerze, nie jest to proste zapytanie POST, musisz wys\u0142a\u0107 zapytanie POST z typem tre\u015bci multipart\/form-data.<br \/>\nZa pomoc\u0105 curl mo\u017cesz to zrobi\u0107, u\u017cywaj\u0105c opcji -F zamiast opcji -d.<br \/>\nNale\u017cy r\u00f3wnie\u017c okre\u015bli\u0107 z parametrem jest plikiem, u\u017cywaj\u0105c @ przed nazw\u0105 pliku.<br \/>\nJe\u015bli chcesz uzyska\u0107 wi\u0119cej informacji, jest to udokumentowane na stronie podr\u0119cznika curl dost\u0119pnej 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>Oto wiersz polece\u0144, kt\u00f3rego powiniene\u015b u\u017cy\u0107:<\/p>\n<p>curl -X POST -F 'auth={&#8222;klucz&quot;:&quot;tw\u00f3j_klucz_api&#8221;,&#8221;sekret&#8221;:&#8221;tw\u00f3j_sekret_api&#8221;}&#8217; -F 'plik=@plik_do_wys\u0142ania.png&#8217; -F 'params={\u201etyp_kompresji&#8221;:&#8221;stratny&#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>Mo\u017cesz u\u017cy\u0107 parametr\u00f3w<br \/>\n\u2013 typ kompresji&#8221;:&#8221;lossy&#8221; lub typ_kompresji&#8221;:&#8221;lossless&#8221; dla kompresji bezstratnej lub stratnej<br \/>\n\u2013 &#8222;resize&#8221;:{\u201ewidth&#8221;:100&#8243;,height&#8221;:100} aby zmieni\u0107 rozmiar obrazu, je\u015bli to konieczne mo\u017cna okre\u015bli\u0107 tylko za pomoc\u0105 lub wysoko\u015b\u0107<\/p>\n<p>W takim przypadku \u017c\u0105danie to:<\/p>\n<p>curl -X POST -F 'auth={&#8222;klucz&#8221;:&#8221;tw\u00f3j_klucz_api&#8221;,&#8221;sekret&#8221;:&#8221;tw\u00f3j_sekret_api&#8221;}&#8217; -F 'plik=@plik_do_wys\u0142ania.png&#8217; -F 'params={\u201etyp_kompresji&#8221;:&#8221;stratny&#8221; &#8222;,resize&#8221;:{\u201eszeroko\u015b\u0107&#8221;:100&#8243;,wysoko\u015b\u0107&#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>Mo\u017cemy wi\u0119c napisa\u0107 <a href=\"https:\/\/helloacm.com\/php-script-to-test-crontab\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">skrypt PHP<\/a>, taki jak nast\u0119puj\u0105cy, aby zoptymalizowa\u0107 lokalne obrazy (zmniejszy\u0107 rozmiar pliku bez dotykania wymiar\u00f3w lub obraz\u00f3w lub <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 lokalny obraz\/pdf na serwer <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> za pomoc\u0105 POST \/images API<\/li>\n<li>Zmie\u0144 nazw\u0119 lokalnego obrazu\/pdf, aby mie\u0107 kopi\u0119 zapasow\u0105<\/li>\n<li>Pobierz skompresowany plik z <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a><\/li>\n<\/ol>\n<p>Oto zrzut ekranu, upewnij si\u0119, \u017ce zast\u0105pi\u0142e\u015b app_key i 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=\"Jak kompresowa\u0107 obrazy za pomoc\u0105 interfejsu API ImageRecycle (skrypt PHP)?\"><\/a><\/p>\n<p>imagerecycle-image-compression<\/p>\n<p>A serwer potwierdza t\u0119 optymalizacj\u0119 z panelu [Historia optymalizacji].<\/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=\"Jak kompresowa\u0107 obrazy za pomoc\u0105 interfejsu API ImageRecycle (skrypt PHP)?\"><\/a><\/p>\n<p>imagerecycle-image-kompresja-historia<\/p>\n<p>Mam plik test.jpg, kt\u00f3ry jest zoptymalizowany od 1,7M do 1,6M. Mo\u017ce to nie by\u0107 du\u017co, a je\u015bli wybior\u0119 inne ustawienia, mo\u017ce to da\u0107 mi wi\u0119cej oszcz\u0119dno\u015bci (takich jak zmiana rozmiaru). [Napisz\u0119 <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/porownanie-imagerecycle-i-imagfy-co-jest-lepsze\/\" title=\"kolejny post\">kolejny post<\/a> na temat recenzji <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> i innych konkurent\u00f3w, takich jak <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/uzywanie-wtyczki-imagify-wordpress-do-zmniejszania-rozmiaru-obrazow\/\" title=\"Imagefy\">Imagefy<\/a>.<\/p>\n<p>Pe\u0142ny kod \u017ar\u00f3d\u0142owy:<\/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>Nast\u0119pnie uruchomi\u0142e\u015b <a href=\"https:\/\/helloacm.com\/bash-for-loops\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">p\u0119tl\u0119 bash,<\/a> aby iterowa\u0107 wszystkie obrazy\/ <a href=\"https:\/\/helloacm.com\/markdown-markup-language-quick-tutorial\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PDF<\/a>, co powinno da\u0107 natychmiastowe oszcz\u0119dno\u015bci.<\/p>\n<p>Za pomoc\u0105 powy\u017cszego skryptu uda\u0142o mi si\u0119 <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\">zaoszcz\u0119dzi\u0107 ponad 2 GB miejsca na<\/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\">dysku SSD na VPS.<\/a><\/p>\n<p>Do\u0142\u0105cz do <a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ImageRecycle<\/a> i skorzystaj z kuponu <strong><a href=\"https:\/\/helloacm.com\/out\/imagerecycle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">IR-PARTNER-20<\/a><\/strong>, aby otrzyma\u0107 20% zni\u017cki na pierwsz\u0105 faktur\u0119, wy\u0142\u0105cznie dla moich czytelnik\u00f3w!<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jak kompresowa\u0107 obrazy za pomoc\u0105 interfejsu API ImageRecycle (skrypt PHP)?<\/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":[721,919,897,752,836,845,866],"tags":[1169],"class_list":["post-233025","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-inny","category-kod","category-otwarte-zrodlo","category-przewodnik-dla-poczatkujacych","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233025","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=233025"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233025\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/224801"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=233025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=233025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=233025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}