{"id":20319,"date":"2023-05-30T13:32:00","date_gmt":"2023-05-30T11:32:00","guid":{"rendered":"https:\/\/panwybierak.pl\/blog\/?p=20319"},"modified":"2023-05-31T13:35:25","modified_gmt":"2023-05-31T11:35:25","slug":"zmiana-wymiarow-zdjec","status":"publish","type":"post","link":"https:\/\/panwybierak.pl\/blog\/2023\/05\/zmiana-wymiarow-zdjec\/","title":{"rendered":"Musisz zmieni\u0107 sporo r\u00f3\u017cnych zdj\u0119\u0107 do&nbsp;jednego wymiaru? Oto, jak to zrobi\u0107 dzi\u0119ki&#8230; Pythonowi"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_69_1 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/panwybierak.pl\/blog\/2023\/05\/zmiana-wymiarow-zdjec\/#A_co_jesli_nie_jestes_programista\" title=\"A&nbsp;co je\u015bli nie jeste\u015b programist\u0105?\">A&nbsp;co je\u015bli nie jeste\u015b programist\u0105?<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>Masowa zmiana wymiar\u00f3w zdj\u0119\u0107 \u2013&nbsp;nie kompresji orygina\u0142\u00f3w, ale&nbsp;np.&nbsp;Przeskalowanie z&nbsp;1920&#215;1080 do&nbsp;2000x1550px \u2013&nbsp;wydaje si\u0119 by\u0107 bardzo czasoch\u0142onna. Ale&#8230; niekoniecznie. Oto, jak mo\u017cna to zrobi\u0107 wykorzystuj\u0105c internet i&nbsp;dos\u0142ownie symboliczn\u0105 znajomo\u015b\u0107 Pythona.<\/p>\n\n\n\n<p>Za\u0142\u00f3\u017cmy, \u017ce&nbsp;masz 120 zdj\u0119\u0107, z&nbsp;kt\u00f3rych ka\u017cdy ma inny wymiar wyj\u015bciowy. Chcesz, by wszystkie by\u0142y ujednolicone \u2013&nbsp;np.&nbsp;pod k\u0105tem wydruku w&nbsp;fotoksi\u0105\u017cce. Jak to zrobi\u0107?<\/p>\n\n\n\n<p>Pierwsze skojarzenie? R\u0119cznie \u2013&nbsp;tylko, \u017ce&nbsp;to oznacza godziny \u017cmudnych edycji chocia\u017cby w&nbsp;IfranView.<\/p>\n\n\n\n<p>Tymczasem mo\u017cna wykorzysta\u0107 szybk\u0105 komend\u0119 Pythona, by zeskalowa\u0107 zdj\u0119cia automatycznie.<\/p>\n\n\n\n<p>Oto przyk\u0142adowy mechanizm w&nbsp;j\u0119zyku Python, kt\u00f3ry mo\u017ce zmieni\u0107 wele zdj\u0119\u0107 JPG do&nbsp;wymiaru np.&nbsp;2000&#215;1500 pikseli. Do&nbsp;tego mechanizmu wystarczy biblioteka PIL (Python Imaging Library) lub&nbsp;Pillow &#8211; je\u015bli korzystasz z&nbsp;Pythona 3.<\/p>\n\n\n\n<p><strong>Tre\u015b\u0107 kodu:<\/strong><\/p>\n\n\n\n<p>python<\/p>\n\n\n\n<p>Copy code<\/p>\n\n\n\n<p>from PIL import Image<\/p>\n\n\n\n<p>import os<\/p>\n\n\n\n<p>def zmien_wymiary_zdjec(nazwa_folderu_wejsciowego, nazwa_folderu_wyjsciowego, szerokosc, wysokosc):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; if not os.path.exists(nazwa_folderu_wyjsciowego):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.makedirs(nazwa_folderu_wyjsciowego)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; for plik in os.listdir(nazwa_folderu_wejsciowego):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if plik.endswith(&#8222;.jpg&#8221;):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sciezka_wejsciowa = os.path.join(nazwa_folderu_wejsciowego, plik)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sciezka_wyjsciowa = os.path.join(nazwa_folderu_wyjsciowego, plik)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obrazek = Image.open(sciezka_wejsciowa)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obrazek = obrazek.resize((szerokosc, wysokosc), Image.ANTIALIAS)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obrazek.save(sciezka_wyjsciowa)<\/p>\n\n\n\n<p>nazwa_folderu_wejsciowego = &#8222;sciezka\/do\/folderu\/wejsciowego&#8221;<\/p>\n\n\n\n<p>nazwa_folderu_wyjsciowego = &#8222;sciezka\/do\/folderu\/wyjsciowego&#8221;<\/p>\n\n\n\n<p>szerokosc = 2000<\/p>\n\n\n\n<p>wysokosc = 1414<\/p>\n\n\n\n<p>zmien_wymiary_zdjec(nazwa_folderu_wejsciowego, nazwa_folderu_wyjsciowego, szerokosc, wysokosc)<\/p>\n\n\n\n<p>Diabe\u0142 tkwi w&nbsp;szczeg\u00f3\u0142ach. Trzeba si\u0119 bowiem upewni\u0107, i\u017c podmienisz &#8222;sciezka\/do\/folderu\/wejsciowego&#8221; na&nbsp;\u015bcie\u017ck\u0119 do&nbsp;folderu, w&nbsp;kt\u00f3rym znajduj\u0105 si\u0119 twoje zdj\u0119cia wej\u015bciowe. Podmie\u0144 r\u00f3wnie\u017c &#8222;sciezka\/do\/folderu\/wyjsciowego&#8221; na&nbsp;\u015bcie\u017ck\u0119 do&nbsp;folderu, w&nbsp;kt\u00f3rym chcesz zapisa\u0107 przetworzone zdj\u0119cia wyj\u015bciowe.<\/p>\n\n\n\n<p>W&nbsp;praktyce kod ten otwiera ka\u017cde zdj\u0119cie z&nbsp;rozszerzeniem &#8222;.jpg&#8221; w&nbsp;folderze wej\u015bciowym, zmienia jego rozmiar na&nbsp;podane wymiary i&nbsp;zapisuje przetworzony obraz w&nbsp;folderze wyj\u015bciowym.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"A_co_jesli_nie_jestes_programista\"><\/span>A&nbsp;co je\u015bli nie jeste\u015b programist\u0105?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Nie musisz przecie\u017c wiedzie\u0107, jak u\u017cywa\u0107 j\u0119zyka komend. I&nbsp;tu internet mo\u017ce pozytywnie zaskoczy\u0107.<\/p>\n\n\n\n<p>Teoretycznie, aby&nbsp;uruchomi\u0107 ten kod na&nbsp;komputerze, musisz mie\u0107 zainstalowany Python w&nbsp;wersji 3.x oraz&nbsp;bibliotek\u0119 PIL (lub Pillow). Uruchamiaj\u0105c kod otw\u00f3rz terminal lub&nbsp;wiersz polecenia, przejd\u017a do&nbsp;folderu, w&nbsp;kt\u00f3rym znajduje si\u0119 plik &#8222;zmien_wymiary.py&#8221; (u\u017cywaj\u0105c polecenia cd) i&nbsp;wpisz nast\u0119puj\u0105ce polecenie:<\/p>\n\n\n\n<p>Copy code<\/p>\n\n\n\n<p>python zmien_wymiary.py<\/p>\n\n\n\n<p>Polecenie to uruchomi kod i&nbsp;rozpocznie przetwarzanie zdj\u0119\u0107.<\/p>\n\n\n\n<p>Po&nbsp;wykonaniu tych krok\u00f3w kod powinien rozpocz\u0105\u0107 przetwarzanie zdj\u0119\u0107 i&nbsp;zapisa\u0107 zmienione wersje o&nbsp;wybraych wymiarach&nbsp; w&nbsp;wybranym folderze wyj\u015bciowym.<\/p>\n\n\n\n<p>Mo\u017cna to jednak&nbsp;zrobi\u0107 r\u00f3wnie\u017c&#8230; online w&nbsp;przegl\u0105darce. Wystarczy wykorzysta\u0107 mo\u017cliwo\u015bci \u015brodowiska Python online lub&nbsp;platformy do&nbsp;notatnik\u00f3w Jupyter online.<\/p>\n\n\n\n<p>Przyk\u0142adem jest Replit (https:\/\/replit.com) lub&nbsp;trinket (https:\/\/trinket.io). One umo\u017cliwiaj\u0105 \u00a0uruchamianie kodu Pythona w&nbsp;przegl\u0105darce bez konieczno\u015bci instalowania go na&nbsp;komputerze. Wystarczy wi\u0119c&nbsp;skopiowa\u0107 powy\u017cszy kod do&nbsp;odpowiedniego \u015brodowiska, zmodyfikowa\u0107 \u015bcie\u017cki folder\u00f3w i&nbsp;uruchomi\u0107 go bezpo\u015brednio w&nbsp;przegl\u0105darce.<\/p>\n\n\n\n<p>Zaskakuj\u0105co proste, prawda?<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/panwybierak.pl\/oferty\/internet-5g\/70\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"270\" src=\"https:\/\/panwybierak.pl\/blog\/wp-content\/uploads\/2021\/01\/CTA_5G-1024x270.png\" alt=\"internet 5G oferty promocje ceny\" class=\"wp-image-14285\" srcset=\"https:\/\/panwybierak.pl\/blog\/wp-content\/uploads\/2021\/01\/CTA_5G-1024x270.png 1024w, https:\/\/panwybierak.pl\/blog\/wp-content\/uploads\/2021\/01\/CTA_5G-300x79.png 300w, https:\/\/panwybierak.pl\/blog\/wp-content\/uploads\/2021\/01\/CTA_5G-768x202.png 768w, https:\/\/panwybierak.pl\/blog\/wp-content\/uploads\/2021\/01\/CTA_5G.png 1170w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Masowa zmiana wymiar\u00f3w zdj\u0119\u0107 \u2013&nbsp;nie kompresji orygina\u0142\u00f3w, ale&nbsp;np.&nbsp;Przeskalowanie z&nbsp;1920&#215;1080 do&nbsp;2000x1550px \u2013&nbsp;wydaje si\u0119 by\u0107 bardzo czasoch\u0142onna. Ale&#8230; niekoniecznie. Oto, jak mo\u017cna to zrobi\u0107 wykorzystuj\u0105c internet i&nbsp;dos\u0142ownie symboliczn\u0105 znajomo\u015b\u0107 Pythona. Za\u0142\u00f3\u017cmy, \u017ce&nbsp;masz 120 zdj\u0119\u0107, z&nbsp;kt\u00f3rych ka\u017cdy ma inny wymiar wyj\u015bciowy. Chcesz, by wszystkie by\u0142y ujednolicone \u2013&nbsp;np.&nbsp;pod k\u0105tem wydruku w&nbsp;fotoksi\u0105\u017cce. Jak to zrobi\u0107? Pierwsze skojarzenie? R\u0119cznie \u2013&nbsp;tylko, \u017ce&nbsp;to [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":20320,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[124],"tags":[1043,1008],"class_list":["post-20319","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-porady","tag-programowanie","tag-zdjecia"],"acf":[],"_links":{"self":[{"href":"https:\/\/panwybierak.pl\/blog\/wp-json\/wp\/v2\/posts\/20319"}],"collection":[{"href":"https:\/\/panwybierak.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/panwybierak.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/panwybierak.pl\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/panwybierak.pl\/blog\/wp-json\/wp\/v2\/comments?post=20319"}],"version-history":[{"count":1,"href":"https:\/\/panwybierak.pl\/blog\/wp-json\/wp\/v2\/posts\/20319\/revisions"}],"predecessor-version":[{"id":20321,"href":"https:\/\/panwybierak.pl\/blog\/wp-json\/wp\/v2\/posts\/20319\/revisions\/20321"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/panwybierak.pl\/blog\/wp-json\/wp\/v2\/media\/20320"}],"wp:attachment":[{"href":"https:\/\/panwybierak.pl\/blog\/wp-json\/wp\/v2\/media?parent=20319"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/panwybierak.pl\/blog\/wp-json\/wp\/v2\/categories?post=20319"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/panwybierak.pl\/blog\/wp-json\/wp\/v2\/tags?post=20319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}