{"id":29324,"date":"2021-06-09T15:20:00","date_gmt":"2021-06-09T12:20:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29324"},"modified":"2021-10-17T04:22:35","modified_gmt":"2021-10-17T01:22:35","slug":"ladda-upp-och-komprimera-flera-bilder-i-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/ladda-upp-och-komprimera-flera-bilder-i-php\/","title":{"rendered":"Ladda upp och komprimera flera bilder i PHP"},"content":{"rendered":"<p>Nyligen fr\u00e5gade en av v\u00e5ra l\u00e4sare hur man laddar upp och komprimerar flera bilder i PHP. Det finns vissa scenarier d\u00e4r vi m\u00e5ste till\u00e5ta anv\u00e4ndare att ladda upp flera bilder. Det \u00e4r alltid en bra praxis att optimera bilderna vid uppladdningstillf\u00e4llet. I den h\u00e4r artikeln studerar vi uppladdning av flera bilder och hur man komprimerar bilder under uppladdningsprocessen.<\/p>\n<h3>Varf\u00f6r beh\u00f6ver vi minska bildens filstorlek?<\/h3>\n<p>Utan tvekan spelar bilder en viktig roll p\u00e5 din webbplats. I\u00f6gonfallande bilder lockar l\u00e4sarnas uppm\u00e4rksamhet och de skulle spendera mer tid p\u00e5 webbplatsen. Men samtidigt g\u00f6r bilder i stora storlekar l\u00e5ngsammare p\u00e5 din webbplats. Eftersom det tar mer bandbredd tar din webbplats l\u00e4ngre tid att ladda webbsidorna. Webbplats\u00e4garna m\u00e5ste vara uppm\u00e4rksamma p\u00e5 att minska bildfilens storlek och anv\u00e4nda det b\u00e4sta bildkomprimeringsverktyget f\u00f6r det.<\/p>\n<p>Jag kommer att visa dig tv\u00e5 s\u00e4tt att komprimera bilder &#8211; TinyPNG och artisansweb <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\/ image-optimizer-<\/a> paketet.<\/p>\n<p><a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">TinyPNG<\/a> \u00e4r en av de popul\u00e4raste bildkompressortj\u00e4nsterna p\u00e5 webben. Med den h\u00e4r tj\u00e4nsten kan du komprimera 500 bilder per m\u00e5nad gratis via deras API: er. F\u00f6r mer \u00e4n 500 bilder m\u00e5ste du betala dem.<\/p>\n<p>Om du m\u00e5ste optimera mer \u00e4n 500 bilder per m\u00e5nad och inte vill betala, anv\u00e4nd sedan paketet &#8217;artisansweb \/ image-optimizer&#8217;. Detta paket anv\u00e4nder tj\u00e4nsten <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it<\/a> f\u00f6r bildoptimering.<\/p>\n<p>Jag rekommenderar att du testar b\u00e5da l\u00f6sningarna, j\u00e4mf\u00f6r produktionen och v\u00e4ljer den som passar dig.<\/p>\n<p>Med detta sagt, l\u00e5t oss ta en titt p\u00e5 hur man komprimerar bilder efter uppladdning.<\/p>\n<h3>Komma ig\u00e5ng med TinyPNG<\/h3>\n<p>F\u00f6r att komma ig\u00e5ng m\u00e5ste du skaffa en API-nyckel fr\u00e5n TinyPNG. <a href=\"https:\/\/tinypng.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Klicka h\u00e4r f\u00f6r<\/a> att h\u00e4mta din API-nyckel. Du beh\u00f6ver bara ange ditt namn och din e-postadress s\u00e5 f\u00e5r du e-postadressen f\u00f6r din nyckel.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20292-6081d911e6af9.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20292-6081d911e6af9.png\" alt=\"Ladda upp och komprimera flera bilder i PHP\" ><\/a><\/p>\n<p>N\u00e4r du har f\u00e5tt din utvecklarnyckel installerar du ett PHP-bibliotek som tillhandah\u00e5lls av TinyPNG. Du b\u00f6r ha <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> installerat p\u00e5 systemet f\u00f6r att installera biblioteket. \u00d6ppna terminalen i din projektkatalog och k\u00f6r kommandot:<\/p>\n<pre><code>composer require tinify\/tinify<\/code><\/pre>\n<h3>Hur komprimerar du bilder med TinyPNG<\/h3>\n<p>Som n\u00e4mnts i titeln p\u00e5 den h\u00e4r artikeln ska vi se hur man laddar upp och komprimerar flera bilder. F\u00f6r detta m\u00e5ste vi skapa ett HTML-formul\u00e4r som har filinmatning f\u00f6r att bl\u00e4ddra i flera bilder. Skapa <code>index.php<\/code>och placera koden nedan i den.<\/p>\n<p><strong>index.php<\/strong><\/p>\n<pre><code>&lt;form method=\"post\" enctype=\"multipart\/form-data\" action=\"process_images.php\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label&gt;Upload Images&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"images[]\" accept=\"image\/*\" multiple&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" name=\"submit\"&gt;Submit&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Till filinmatningen gav jag ett namn som bilder []. Det beror p\u00e5 att vi p\u00e5 serversidan beh\u00f6ver en rad filer eftersom anv\u00e4ndaren kommer att bl\u00e4ddra i flera bilder.<\/p>\n<p>N\u00e4r vi har bl\u00e4ddrat i bilderna och tryckt p\u00e5 knappen Skicka skickas formul\u00e4rdata till filen <code>process_images.php<\/code>. Det h\u00e4r \u00e4r filen d\u00e4r vi beh\u00f6ver skriva en kod f\u00f6r att ladda upp och komprimera bilder.<\/p>\n<p><strong>process_images.php<\/strong><\/p>\n<pre><code>&lt;?php\n\/\/ Increase PHP execution time\nset_time_limit(0);\n\u00a0\nrequire_once(\"vendor\/autoload.php\");\nTinifysetKey(\"YOUR_API_KEY\");\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\u00a0\u00a0\u00a0$supported_images = array('image\/gif', 'image\/jpg', 'image\/jpeg', 'image\/png');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (!file_exists(getcwd(). '\/uploads')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir(getcwd(). '\/uploads', 0777);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0foreach($_FILES['images']['name'] as $key=&gt;$val) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$file_name = $_FILES['images']['name'][$key];\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ get filename without extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenamewithoutextension = pathinfo($file_name, PATHINFO_FILENAME);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (in_array($_FILES['images']['type'][$key], $supported_images)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename_to_store = $filenamewithoutextension.'_'.time().'.' .$ext;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['images']['tmp_name'][$key], getcwd().'\/uploads\/'.$filename_to_store);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ optimize image using TinyPNG\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$source = TinifyfromFile(getcwd().'\/uploads\/'.$filename_to_store);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$source-&gt;toFile(getcwd().'\/uploads\/'.$filename_to_store);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exit;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0echo \"Files uploaded successfully.\";\n}<\/code><\/pre>\n<p>Se till att ers\u00e4tta platsh\u00e5llaren med din faktiska API-nyckel. I koden ovan genererar vi ett unikt filnamn genom att l\u00e4gga tid p\u00e5 det. N\u00e4r en bild har laddats upp till servern skickar vi bilden till TinyPNG API f\u00f6r optimering. I geng\u00e4ld f\u00e5r vi den komprimerade versionen av bilden som vi lagrar p\u00e5 samma plats och med samma filnamn.<\/p>\n<h3>Komprimera bilder med artisansweb \/ image-optimizer Package<\/h3>\n<p>Jag har utvecklat <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Image Optimizer-<\/a> paketet. Detta paket anv\u00e4nder tj\u00e4nsten <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it<\/a> under huven f\u00f6r att optimera bilder. Om du letar efter gratis service kan du prova det h\u00e4r paketet. ReSmush.it har hittills optimerat miljarder bilder. Detta paket kr\u00e4ver ingen nyckel eller registrering. Anslut bara det s\u00e5 \u00e4r du klar.<\/p>\n<p>F\u00f6r att komma ig\u00e5ng med Image Optimizer-paketet, installera det med kommandot:<\/p>\n<pre><code>composer require artisansweb\/image-optimizer<\/code><\/pre>\n<p>D\u00e4refter \u00e4ndras koden i <code>process_image.php<\/code>f\u00f6ljande.<\/p>\n<pre><code>&lt;?php\n\/\/ Increase PHP execution time\nset_time_limit(0);\n\u00a0\nrequire_once(\"vendor\/autoload.php\");\n\u00a0\nuse ArtisansWebOptimizer;\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\u00a0\u00a0\u00a0$supported_images = array('image\/gif', 'image\/jpg', 'image\/jpeg', 'image\/png');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (!file_exists(getcwd(). '\/uploads')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir(getcwd(). '\/uploads', 0777);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0foreach($_FILES['images']['name'] as $key=&gt;$val) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$file_name = $_FILES['images']['name'][$key];\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ get filename without extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenamewithoutextension = pathinfo($file_name, PATHINFO_FILENAME);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (in_array($_FILES['images']['type'][$key], $supported_images)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename_to_store = $filenamewithoutextension.'_'.time().'.' .$ext;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['images']['tmp_name'][$key], getcwd().'\/uploads\/'.$filename_to_store);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ optimize image\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img = new Optimizer();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$source = getcwd().'\/uploads\/'.$filename_to_store;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;optimize($source);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exit;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0echo \"Files uploaded successfully.\";\n}<\/code><\/pre>\n<p>Jag hoppas att du f\u00f6rst\u00e5r hur du laddar upp och komprimerar flera bilder i PHP. Jag skulle vilja h\u00f6ra dina tankar och f\u00f6rslag i kommentarsektionen nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/dra-och-slapp-filoverforing-med-javascript-och-php\/\" title=\"Dra och sl\u00e4pp fil\u00f6verf\u00f6ring med JavaScript och PHP\">Dra och sl\u00e4pp fil\u00f6verf\u00f6ring med JavaScript och PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/andra-storlek-pa-bild-i-php-med-hjalp-av-interventionsbildbibliotek\/\" title=\"\u00c4ndra storlek p\u00e5 bild i PHP med hj\u00e4lp av interventionsbildbibliotek\">\u00c4ndra storlek p\u00e5 bild i PHP med hj\u00e4lp av interventionsbildbibliotek<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/ladda-upp-bild-med-bulletproof-library-i-php\/\" title=\"Ladda upp bild med hj\u00e4lp av Bulletproof Library i PHP\">Ladda upp bild med hj\u00e4lp av Bulletproof Library i PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vill du ladda upp och komprimera flera bilder i PHP? I den h\u00e4r artikeln visar vi hur du komprimerar bilder efter uppladdning till servern.<\/p>\n","protected":false},"author":1,"featured_media":21612,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[279],"tags":[850],"class_list":["post-29324","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29324","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=29324"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29324\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21612"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=29324"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=29324"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=29324"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}