{"id":25529,"date":"2021-06-09T15:39:00","date_gmt":"2021-06-09T12:39:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25529"},"modified":"2021-10-18T02:33:07","modified_gmt":"2021-10-17T23:33:07","slug":"mehrere-bilder-in-php-hochladen-und-komprimieren","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/mehrere-bilder-in-php-hochladen-und-komprimieren\/","title":{"rendered":"Mehrere Bilder in PHP hochladen und komprimieren"},"content":{"rendered":"<p>K\u00fcrzlich fragte einer unserer Leser, wie man mehrere Bilder in PHP hochl\u00e4dt und komprimiert. Es gibt bestimmte Szenarien, in denen wir Benutzern das Hochladen mehrerer Bilder erm\u00f6glichen m\u00fcssen. Es empfiehlt sich immer, die Bilder beim Hochladen zu optimieren. In diesem Artikel untersuchen wir das Hochladen mehrerer Bilder und das Komprimieren von Bildern w\u00e4hrend des Hochladevorgangs.<\/p>\n<h3>Warum m\u00fcssen wir die Bilddateigr\u00f6\u00dfe reduzieren?<\/h3>\n<p>Zweifellos spielen Bilder eine wichtige Rolle auf Ihrer Website. Auff\u00e4llige Bilder ziehen die Aufmerksamkeit der Leser auf sich und sie w\u00fcrden mehr Zeit auf der Website verbringen. Gleichzeitig verlangsamen gro\u00dfformatige Bilder Ihre Website. Da mehr Bandbreite ben\u00f6tigt wird, braucht Ihre Website l\u00e4nger, um die Webseiten zu laden. Die Websitebesitzer m\u00fcssen darauf achten, die Bilddateigr\u00f6\u00dfe zu reduzieren und das beste Bildkomprimierungstool daf\u00fcr zu verwenden.<\/p>\n<p>Ich werde Ihnen 2 M\u00f6glichkeiten zeigen, Bilder zu komprimieren \u2013 TinyPNG und <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">das<\/a> Paket <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">artisansweb\/image-optimizer<\/a>.<\/p>\n<p><a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">TinyPNG<\/a> ist einer der beliebtesten Bildkomprimierungsdienste im Internet. Dieser Dienst erm\u00f6glicht die kostenlose Komprimierung von 500 Bildern pro Monat \u00fcber ihre APIs. F\u00fcr mehr als 500 Bilder m\u00fcssen Sie diese bezahlen.<\/p>\n<p>Wenn Sie mehr als 500 Bilder pro Monat optimieren m\u00fcssen und nicht bezahlen m\u00f6chten, dann nutzen Sie das Paket &#8218;artisansweb\/image-optimizer&#8216;. Dieses Paket verwendet den <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it-<\/a> Dienst zur Bildoptimierung.<\/p>\n<p>Ich w\u00fcrde empfehlen, beide L\u00f6sungen auszuprobieren, die Ausgabe zu vergleichen und die f\u00fcr Sie geeignete auszuw\u00e4hlen.<\/p>\n<p>Lassen Sie uns jedoch einen Blick darauf werfen, wie Sie Bilder nach dem Hochladen komprimieren.<\/p>\n<h3>Erste Schritte mit TinyPNG<\/h3>\n<p>Um zu beginnen, ben\u00f6tigen Sie einen API-Schl\u00fcssel von TinyPNG. <a href=\"https:\/\/tinypng.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Klicken Sie hier<\/a>, um Ihren API-Schl\u00fcssel zu erhalten. Sie m\u00fcssen nur Ihren Namen und Ihre E-Mail-Adresse eingeben und Sie erhalten die E-Mail f\u00fcr Ihren Schl\u00fcssel.<\/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=\"Mehrere Bilder in PHP hochladen und komprimieren\" ><\/a><\/p>\n<p>Sobald Sie Ihren Entwicklerschl\u00fcssel erhalten haben, installieren Sie eine von TinyPNG bereitgestellte PHP-Bibliothek. Sie sollten <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> auf dem System installiert haben, um die Bibliothek zu installieren. \u00d6ffnen Sie das Terminal in Ihrem Projekt-Root-Verzeichnis und f\u00fchren Sie den Befehl aus:<\/p>\n<pre><code>composer require tinify\/tinify<\/code><\/pre>\n<h3>So komprimieren Sie Bilder mit TinyPNG<\/h3>\n<p>Wie im Titel dieses Artikels erw\u00e4hnt, werden wir sehen, wie Sie mehrere Bilder hochladen und komprimieren. Dazu m\u00fcssen wir ein HTML-Formular erstellen, das Dateieingaben zum Durchsuchen mehrerer Bilder enth\u00e4lt. Erstellen <code>index.php<\/code>und platzieren Sie den folgenden Code darin.<\/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>Der Dateieingabe habe ich einen Namen als images[] gegeben. Dies liegt daran, dass wir serverseitig ein Array von Dateien ben\u00f6tigen, da der Benutzer mehrere Bilder durchsuchen wird.<\/p>\n<p>Sobald wir die Bilder durchsuchen und auf die Schaltfl\u00e4che &quot;Senden&quot; klicken, werden Formulardaten an die Datei gesendet <code>process_images.php<\/code>. Dies ist die Datei, in die wir einen Code zum Hochladen und Komprimieren von Bildern schreiben m\u00fcssen.<\/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>Stellen Sie sicher, dass Sie den Platzhalter durch Ihren tats\u00e4chlichen API-Schl\u00fcssel ersetzen. Im obigen Code generieren wir einen eindeutigen Dateinamen, indem wir ihm Zeit anh\u00e4ngen. Sobald ein Bild auf den Server hochgeladen wurde, senden wir das Bild zur Optimierung an die TinyPNG-API. Im Gegenzug erhalten wir die komprimierte Version des Bildes, die wir an derselben Stelle und mit demselben Dateinamen speichern.<\/p>\n<h3>Bilder mit artisansweb\/image-optimizer Package komprimieren<\/h3>\n<p>Ich habe das <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Image Optimizer-<\/a> Paket entwickelt. Dieses Paket verwendet den <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it-<\/a> Dienst unter der Haube zur Optimierung von Bildern. Wenn Sie einen kostenlosen Service suchen, probieren Sie dieses Paket aus. Das reSmush.it hat bisher Milliarden von Bildern optimiert. Dieses Paket erfordert weder die Bereitstellung eines Schl\u00fcssels noch eine Registrierung. Einfach einstecken und fertig.<\/p>\n<p>Um mit dem Image Optimizer-Paket zu beginnen, installieren Sie es mit dem folgenden Befehl:<\/p>\n<pre><code>composer require artisansweb\/image-optimizer<\/code><\/pre>\n<p>Als n\u00e4chstes wird der Code in der <code>process_image.php<\/code>wie folgt ge\u00e4ndert.<\/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>Ich hoffe, Sie verstehen, wie Sie mehrere Bilder in PHP hochladen und komprimieren. Ich w\u00fcrde gerne Ihre Gedanken und Vorschl\u00e4ge im Kommentarbereich unten h\u00f6ren.<\/p>\n<h4>Zum Thema passende Artikel<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/datei-upload-per-drag-drop-mit-javascript-und-php\/\" title=\"Datei-Upload per Drag-and-Drop mit JavaScript und PHP\">Datei-Upload per Drag-and-Drop mit JavaScript und PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/bildgroesse-in-php-mit-intervention-image-library-aendern\/\" title=\"Bildgr\u00f6\u00dfe in PHP mit Intervention Image Library \u00e4ndern\">Bildgr\u00f6\u00dfe in PHP mit Intervention Image Library \u00e4ndern<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/bild-mit-bulletproof-library-in-php-hochladen-upload\/\" title=\"Bild mit der Bulletproof-Bibliothek in PHP hochladen\">Bild mit der Bulletproof-Bibliothek in PHP hochladen<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Aufnahmequelle:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f6chten Sie mehrere Bilder in PHP hochladen und komprimieren? In diesem Artikel zeigen wir, wie Sie Bilder nach dem Hochladen auf den Server komprimieren.<\/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":[272],"tags":[845],"class_list":["post-25529","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-3","tag-affiai-de"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/comments?post=25529"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25529\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/21612"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=25529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=25529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=25529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}