{"id":29347,"date":"2021-06-13T17:14:00","date_gmt":"2021-06-13T14:14:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29347"},"modified":"2021-10-18T03:32:48","modified_gmt":"2021-10-18T00:32:48","slug":"zmien-rozmiar-obrazu-w-php-za-pomoca-biblioteki-obrazow-interwencyjnych","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/zmien-rozmiar-obrazu-w-php-za-pomoca-biblioteki-obrazow-interwencyjnych\/","title":{"rendered":"Zmie\u0144 rozmiar obrazu w PHP za pomoc\u0105 biblioteki obraz\u00f3w interwencyjnych"},"content":{"rendered":"<p>Szukasz sposobu na zmian\u0119 rozmiaru obraz\u00f3w w PHP? Pracuj\u0105c nad aplikacj\u0105 webow\u0105 musimy stworzy\u0107 r\u00f3\u017cne miniaturowe wersje oryginalnego obrazu. Miniatura to zmieniona wersja oryginalnego obrazu. W tym artykule dowiemy si\u0119, jak przesy\u0142a\u0107 i zmienia\u0107 rozmiar obraz\u00f3w w PHP.<\/p>\n<h3>Dlaczego powinni\u015bmy zmienia\u0107 rozmiar obraz\u00f3w?<\/h3>\n<p>Na stronie istnieje kilka scenariuszy, w kt\u00f3rych musimy wy\u015bwietli\u0107 kr\u00f3tk\u0105 wersj\u0119 du\u017cego obrazu. Popularnym przyk\u0142adem jest Galeria Obraz\u00f3w. W galerii zwykli\u015bmy wy\u015bwietla\u0107 list\u0119 ma\u0142ych obrazk\u00f3w. Gdy u\u017cytkownik kliknie ma\u0142y obraz, otworzy si\u0119 du\u017cy obraz w wyskakuj\u0105cym okienku. Innym przyk\u0142adem jest wy\u015bwietlanie powi\u0105zanych artyku\u0142\u00f3w, w kt\u00f3rych pokazujemy ma\u0142e obrazki wraz z tytu\u0142em i opisem postu.<\/p>\n<p>W tych scenariuszach musimy wygenerowa\u0107 ma\u0142y obraz (miniatur\u0119) przy u\u017cyciu naszego oryginalnego obrazu. Ma\u0142a miniatura zmniejsza rozmiar twoich stron. Poniewa\u017c u\u017cywasz ma\u0142ej miniatury, przegl\u0105darka wymaga niskiej przepustowo\u015bci do za\u0142adowania obrazu. Doda troch\u0119 korzy\u015bci do strony internetowej. Niekt\u00f3rzy z nich s\u0105:<\/p>\n<ul>\n<li>Poprawia wydajno\u015b\u0107 serwera<\/li>\n<li>Zmniejsz przepustowo\u015b\u0107<\/li>\n<li>Popraw szybko\u015b\u0107 strony<\/li>\n<\/ul>\n<p>Bior\u0105c to pod uwag\u0119, przyjrzyjmy si\u0119, jak zmieni\u0107 rozmiar obrazu w PHP.<\/p>\n<h3>Pierwsze kroki<\/h3>\n<p><a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Intervention Image<\/a> to biblioteka typu open source, kt\u00f3ra dzia\u0142a jako narz\u0119dzie do zmiany rozmiaru obrazu. Pod mask\u0105 Intervention Image wykorzystuje GD Library i Imagick do przetwarzania i manipulacji obrazami.<\/p>\n<p>Aby rozpocz\u0105\u0107, musisz zainstalowa\u0107 bibliotek\u0119 obraz\u00f3w interwencji w swojej aplikacji. Do instalacji biblioteki polecam u\u017cywa\u0107 <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composera<\/a>.<\/p>\n<p>Otw\u00f3rz terminal w katalogu g\u0142\u00f3wnym projektu i uruchom poni\u017csze polecenie.<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Po zainstalowaniu biblioteki musisz uwzgl\u0119dni\u0107 jej \u015brodowisko w swojej aplikacji. W tym celu do\u0142\u0105cz poni\u017cej dwie linie do pliku PHP.<\/p>\n<pre><code>&lt;?php\n\/\/ include composer autoload\nrequire 'vendor\/autoload.php';\n\u00a0\u00a0\nuse InterventionImageImageManagerStatic as Image;<\/code><\/pre>\n<p>Aby przes\u0142a\u0107 obraz i zmieni\u0107 jego rozmiar, potrzebujemy formularza, w kt\u00f3rym mo\u017cna go przegl\u0105da\u0107 i nacisn\u0105\u0107 przycisk przesy\u0142ania. U\u017cyj poni\u017cszego kodu HTML, kt\u00f3ry zawiera dane wej\u015bciowe pliku i przycisk przesy\u0142ania.<\/p>\n<pre><code>&lt;form method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"file\" name=\"image\" \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\"&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<h3>Zmie\u0144 rozmiar obrazu w PHP za pomoc\u0105 obrazu interwencyjnego<\/h3>\n<p>Zainstalowali\u015bmy bibliotek\u0119 i stworzyli\u015bmy formularz. Nast\u0119pnie musimy za\u0142adowa\u0107 i zmieni\u0107 rozmiar obrazu w locie. Zamierzam stworzy\u0107 dwa katalogi <code>uploads<\/code>i <code>thumbnails<\/code>. W <code>uploads<\/code>folderze b\u0119dziemy przechowywa\u0107 oryginalny obraz. Miniaturowa wersja obrazu b\u0119dzie przechowywana w <code>thumbnails<\/code>katalogu.<\/p>\n<p>U\u017cyj poni\u017cszego kodu, kt\u00f3ry zapisze oryginaln\u0105 i miniaturow\u0105 wersj\u0119 obrazu odpowiednio w katalogach <code>uploads<\/code>i <code>thumbnails<\/code>.<\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\n\u00a0\u00a0\nuse InterventionImageImageManagerStatic as Image;\n\u00a0\n$allowed_mime_type = array('image\/jpg', 'image\/jpeg', 'image\/png', 'image\/gif');\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (in_array($_FILES['image']['type'], $allowed_mime_type)) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (!file_exists('uploads')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir('uploads', 0755);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = time().'_'.$_FILES['image']['name'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filepath = 'uploads\/'. $filename;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['image']['tmp_name'], $filepath);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (!file_exists('uploads\/thumbnails')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir('uploads\/thumbnails', 0755);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$thumbnailpath = 'uploads\/thumbnails\/'. $filename;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img = Image::make($filepath);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;resize(300, null, function ($constraint) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;save($thumbnailpath);\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>W powy\u017cszym kodzie przekaza\u0142em szeroko\u015b\u0107 jako 300 i zmieni\u0142em rozmiar obrazu, zachowuj\u0105c jego proporcje. Mo\u017cesz przekaza\u0107 warto\u015b\u0107 szeroko\u015bci zgodnie z wymaganiami. Zaleca si\u0119 zachowanie proporcji obrazu podczas zmiany rozmiaru obrazu. Przy u\u017cyciu wsp\u00f3\u0142czynnika proporcji obraz nie zostanie rozci\u0105gni\u0119ty. Je\u015bli jednak szukasz twardej uprawy, zast\u0105p poni\u017csze linie<\/p>\n<pre><code>$img-&gt;resize(300, null, function ($constraint) {\n\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n});<\/code><\/pre>\n<p>Z<\/p>\n<pre><code>$img-&gt;resize(300, 150)-&gt;save($thumbnailpath);<\/code><\/pre>\n<h3>Wniosek<\/h3>\n<p>W tym samouczku dowiedzieli\u015bmy si\u0119, jak zmienia\u0107 rozmiar obraz\u00f3w, zachowuj\u0105c ich proporcje. Napisali\u015bmy r\u00f3wnie\u017c kod, kt\u00f3ry mocno przytnie obraz. Interwencja Biblioteka obraz\u00f3w zapewnia kilka dodatkowych opcji dla <code>resize<\/code>metody. Mo\u017cesz przeczyta\u0107 wi\u0119cej na ten temat w ich <a href=\"http:\/\/image.intervention.io\/api\/resize\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentacji<\/a>.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/zmien-rozmiar-obrazu-w-laravel-za-pomoca-biblioteki-obrazow-interwencyjnych\/\" title=\"Zmie\u0144 rozmiar obrazu w Laravel za pomoc\u0105 biblioteki obraz\u00f3w interwencyjnych\">Zmie\u0144 rozmiar obrazu w Laravel za pomoc\u0105 biblioteki obraz\u00f3w interwencyjnych<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/zmien-rozmiar-obrazu-w-php-za-pomoca-tinypng\/\" title=\"Zmie\u0144 rozmiar obrazu w PHP za pomoc\u0105 TinyPNG\">Zmie\u0144 rozmiar obrazu w PHP za pomoc\u0105 TinyPNG<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/przeciagnij-i-upusc-przesylanie-plikow-za-pomoca-javascript-i-php\/\" title=\"Przeci\u0105gnij i upu\u015b\u0107 przesy\u0142anie plik\u00f3w za pomoc\u0105 JavaScript i PHP\">Przeci\u0105gnij i upu\u015b\u0107 przesy\u0142anie plik\u00f3w za pomoc\u0105 JavaScript i PHP<\/a><\/li>\n<\/ul>\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 dowiemy si\u0119, jak zmieni\u0107 rozmiar obraz\u00f3w w PHP za pomoc\u0105 Interwencyjnej Biblioteki Obraz\u00f3w. U\u017cycie wersji miniatury zmniejsza rozmiar strony internetowej<\/p>\n","protected":false},"author":1,"featured_media":21621,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[277],"tags":[847],"class_list":["post-29347","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\/29347","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=29347"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29347\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/21621"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=29347"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=29347"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=29347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}