{"id":27970,"date":"2021-05-18T15:48:00","date_gmt":"2021-05-18T12:48:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27970"},"modified":"2021-10-18T03:44:09","modified_gmt":"2021-10-18T00:44:09","slug":"optymalizacja-obrazu-za-pomoca-pakietu-artisansweb-image-optimizer","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/optymalizacja-obrazu-za-pomoca-pakietu-artisansweb-image-optimizer\/","title":{"rendered":"Optymalizacja obrazu za pomoc\u0105 pakietu artisansweb\/image-optimizer"},"content":{"rendered":"<p>Od 4 lat prowadz\u0119 tego bloga. Wraz z tym blogiem prowadz\u0119 r\u00f3wnie\u017c <a href=\"https:\/\/www.youtube.com\/channel\/UCosi8Kv8-EPLt5TBJLlsWJA\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kana\u0142 na YouTube, na<\/a> kt\u00f3rym udost\u0119pniam filmy, kt\u00f3re pokazuj\u0105, jak wdra\u017ca\u0107 moje artyku\u0142y.<\/p>\n<p>Wierz\u0119 w open source. Na mojej stronie nie prowadz\u0119 p\u0142atnego cz\u0142onkostwa, nie sprzedaj\u0119 ebook\u00f3w ani kurs\u00f3w. Lubi\u0119 mie\u0107 wolne zasoby. Maj\u0105c to na uwadze, stworzy\u0142em m\u00f3j pierwszy pakiet GitHub <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">artisansweb\/image-optimizer,<\/a> kt\u00f3ry zajmuje si\u0119 optymalizacj\u0105 obraz\u00f3w dla Twojej witryny.<\/p>\n<p>W przesz\u0142o\u015bci napisa\u0142em kilka artyku\u0142\u00f3w na temat optymalizacji obrazu. Do tej pory TinyPNG by\u0142 moim ulubionym i nadal jest. Ale ograniczenie TinyPNG polega na tym, \u017ce umo\u017cliwiaj\u0105 optymalizacj\u0119 500 darmowych obraz\u00f3w miesi\u0119cznie. Powy\u017cej 500 obraz\u00f3w naliczana jest op\u0142ata za obraz.<\/p>\n<p>Kilka poprzednich artyku\u0142\u00f3w na temat optymalizacji obrazu:<\/p>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/przeslij-i-skompresuj-wiele-obrazow-w-php\/\" title=\"Prze\u015blij i skompresuj wiele obraz\u00f3w w PHP\">Prze\u015blij i skompresuj wiele obraz\u00f3w w PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-zoptymalizowac-obraz-podczas-przesylania-w-php\/\" title=\"Jak zoptymalizowa\u0107 obraz podczas przesy\u0142ania w PHP\">Jak zoptymalizowa\u0107 obraz podczas przesy\u0142ania w PHP<\/a><\/li>\n<\/ul>\n<p>Istniej\u0105 r\u00f3wnie\u017c inne pakiety, ale wymagaj\u0105 one zainstalowania na naszym komputerze oprogramowania takiego jak JpegOptim, Optipng itp. To te\u017c nie jest mo\u017cliwe rozwi\u0105zanie.<\/p>\n<p>W zesz\u0142ym roku pracowa\u0142em nad projektem klienta, kt\u00f3ry ma tysi\u0105ce obraz\u00f3w potrzebnych do kompresji. Szukali\u015bmy open source i wydajnej us\u0142ugi, kt\u00f3ra mo\u017ce wykona\u0107 nasz\u0105 prac\u0119. Potem dowiedzieli\u015bmy si\u0119 o <a href=\"http:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it,<\/a> kt\u00f3ry jest ca\u0142kowicie darmow\u0105 us\u0142ug\u0105 do optymalizacji obraz\u00f3w.<\/p>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/kompresuj-obrazy-dla-strony-internetowej-za-pomoca-resmush-it-w-php\/\" title=\"Kompresuj obrazy dla strony internetowej za pomoc\u0105 reSmush.it w PHP\">Kompresuj obrazy dla strony internetowej za pomoc\u0105 reSmush.it w PHP<\/a><\/li>\n<\/ul>\n<p>Chocia\u017c napisa\u0142em artyku\u0142 na temat reSmush.it, czuj\u0119, \u017ce mog\u0119 z niego stworzy\u0107 <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pakiet GitHub<\/a> i tak zrobi\u0142em. Je\u015bli przeczyta\u0142e\u015b m\u00f3j artyku\u0142 na reSmush.it, przekonasz si\u0119, \u017ce trzeba doda\u0107 oko\u0142o 25-30 linijek kodu. Ale je\u015bli zdecydujesz si\u0119 na pakiet, mo\u017cesz to zrobi\u0107 w 5-6 liniach.<\/p>\n<p>Maj\u0105c to na uwadze, om\u00f3wmy, jak zainstalowa\u0107 i u\u017cywa\u0107 <code>artisansweb\/image-optimizer<\/code>pakietu.<\/p>\n<h3>Optymalizacja obrazu za pomoc\u0105 PHP<\/h3>\n<p>Najpierw musisz zainstalowa\u0107 pakiet za pomoc\u0105 Kompozytora, uruchamiaj\u0105c polecenie:<\/p>\n<pre><code>composer require artisansweb\/image-optimizer<\/code><\/pre>\n<p>Po zainstalowaniu pakietu mo\u017cesz zoptymalizowa\u0107 obraz za pomoc\u0105 poni\u017cszego kodu.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\nuse ArtisansWebOptimizer;\n\u00a0\n$img = new Optimizer();\n\u00a0\n$source = 'SOURCE_PATH_OF_IMAGE';\n$img-&gt;optimize($source);<\/code><\/pre>\n<p>Tutaj musisz przekaza\u0107 pe\u0142n\u0105 \u015bcie\u017ck\u0119 katalogu obrazu \u017ar\u00f3d\u0142owego, a obraz \u017ar\u00f3d\u0142owy zostanie automatycznie zoptymalizowany. Czasami trzeba zachowa\u0107 oryginalny obraz i przechowywa\u0107 zoptymalizowan\u0105 wersj\u0119 w innym katalogu. W takim przypadku mo\u017cesz u\u017cy\u0107 drugiego parametru jako miejsca docelowego.<\/p>\n<pre><code>&lt;?php\n$source = 'SOURCE_PATH_OF_IMAGE';\n$destination = 'DESTINATION_PATH_OF_IMAGE';\n$img-&gt;optimize($source, $destination);<\/code><\/pre>\n<p>U\u017cywaj\u0105c powy\u017cszego kodu, mo\u017cesz zoptymalizowa\u0107 obrazy, kt\u00f3re znajduj\u0105 si\u0119 w twoim katalogu. Zalecam jednak zoptymalizowanie obrazu podczas przesy\u0142ania, aby nie trzeba by\u0142o osobno wykonywa\u0107 zada\u0144 optymalizacyjnych.<\/p>\n<p>U\u017cytkownik mo\u017ce zoptymalizowa\u0107 obraz podczas przesy\u0142ania w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\nuse ArtisansWebOptimizer;\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\u00a0\u00a0\u00a0$img = new Optimizer();\n\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['file']['tmp_name'], 'images\/'.$_FILES['file']['name']);\n\u00a0\u00a0\u00a0\u00a0$img-&gt;optimize('images\/'.$_FILES['file']['name']);\n}\n?&gt;\n\u00a0\n&lt;form method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"file\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Chocia\u017c reSmush.it do tej pory skompresowa\u0142 miliardy obraz\u00f3w, mo\u017ce by\u0107 mo\u017cliwe, \u017ce ich us\u0142uga z jakiego\u015b powodu nie dzia\u0142a. Ten scenariusz obs\u0142ugiwa\u0142em w pakiecie. Z jakiego\u015b powodu, je\u015bli pakiet nie otrzyma zoptymalizowanej wersji z reSmush.it, to jako rezerw\u0119 u\u017cywa natywnych metod PHP, takich jak imagecreatefromjpeg, imagecreatefrompng, imagecreatefromgif, imagejpeg do optymalizacji.<\/p>\n<p>Jest w toku kilka nowych funkcji, kt\u00f3re dodam do pakietu i wkr\u00f3tce go wydam.<\/p>\n<p>B\u0119dzie mi mi\u0142o, je\u015bli skorzystasz z pakietu i dam zna\u0107, jak dzia\u0142a w komentarzach poni\u017cej. Podziel si\u0119 swoj\u0105 opini\u0105, aby\u015bmy razem mogli ulepszy\u0107 ten pakiet, kt\u00f3ry pomo\u017ce spo\u0142eczno\u015bci.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym artykule poka\u017c\u0119 jak wykona\u0107 zadanie optymalizacji obrazu w PHP przy u\u017cyciu pakietu GitHub artisansweb\/image-optimizer. Korzystaj\u0105c z tego pakietu, nie potrzebujesz<\/p>\n","protected":false},"author":1,"featured_media":20571,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[277],"tags":[847],"class_list":["post-27970","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=27970"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27970\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/20571"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=27970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=27970"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=27970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}