{"id":25069,"date":"2021-05-31T15:30:00","date_gmt":"2021-05-31T12:30:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25069"},"modified":"2021-10-18T02:35:23","modified_gmt":"2021-10-17T23:35:23","slug":"so-laden-und-komprimieren-sie-bilder-in-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/so-laden-und-komprimieren-sie-bilder-in-laravel\/","title":{"rendered":"So laden und komprimieren Sie Bilder in Laravel"},"content":{"rendered":"<p>Suchen Sie nach dem Hochladen und Komprimieren von Bildern in Laravel? Laravel bietet eine einfache M\u00f6glichkeit zum Hochladen von Dateien. Das Komprimieren der Bilder beim Hochladen ist eine bew\u00e4hrte Vorgehensweise. In diesem Artikel zeige ich Ihnen, wie Sie Bilder in Laravel hochladen und komprimieren.<\/p>\n<h3>Warum m\u00fcssen Bilder komprimiert werden?<\/h3>\n<p>Bilder spielen eine wichtige Rolle auf Ihrer Website. Bilder sorgen f\u00fcr eine bessere UX und ein auff\u00e4lliges Erlebnis f\u00fcr die Besucher. Gleichzeitig kann es aber auch die Leistung der Website beeintr\u00e4chtigen. Schwere Bilder verlangsamen die Site. Infolgedessen dauert das Laden Ihrer Website sehr lange. Benutzer m\u00f6gen keine langsamen Websites. Wenn das Laden Ihrer Website l\u00e4nger dauert, ist die Wahrscheinlichkeit hoch, dass Sie Ihr Publikum verlieren. Die Standardladezeit f\u00fcr eine Website betr\u00e4gt 2 Sekunden. Sie sollten darauf achten, dass Ihre Site innerhalb von 2 Sekunden geladen wird.<\/p>\n<p>Obwohl einige Faktoren ber\u00fccksichtigt werden m\u00fcssen, um die Seitengeschwindigkeit zu verbessern, ist einer davon die Verwendung optimierter Bilder. Durch das Komprimieren von Bildern wird die Gr\u00f6\u00dfe Ihres Originalbilds verringert, ohne dass die Qualit\u00e4t verloren geht. Es hilft, die Geschwindigkeit der Website zu erh\u00f6hen.<\/p>\n<p>Sehen wir uns jedoch an, wie Sie Bilder in Laravel hochladen und komprimieren.<\/p>\n<h3>Hochladen von Bildern in Laravel<\/h3>\n<p>Laravel bietet eine saubere M\u00f6glichkeit, die Bilder hochzuladen. Um damit zu beginnen, m\u00fcssen wir zun\u00e4chst ein Verzeichnis erstellen, in dem wir die Bilder speichern. \u00d6ffnen Sie Ihre Eingabeaufforderung im Stammverzeichnis und f\u00fchren Sie den folgenden Befehl aus.<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Dieser Befehl erstellt ein &#8217;storage&#8216;-Verzeichnis unter dem &#8218;public&#8216;-Ordner.<\/p>\n<p>Erstellen Sie als N\u00e4chstes ein Formular mit der Dateieingabe- und Senden-Schaltfl\u00e4che, indem Sie den folgenden Code in Ihre Blade-Datei einf\u00fcgen.<\/p>\n<pre><code>&lt;form action=\"{{ url('ROUTE_HERE') }}\" method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleInputFile\"&gt;File input&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"profile_image\" id=\"exampleInputFile\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" class=\"btn btn-default\"&gt;Submit&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Im obigen HTML habe ich eine Dateieingabe mit dem Namen &#8218;profile_image&#8216; hinzugef\u00fcgt. Ich habe auch hinzugef\u00fcgt, <code>{{ csrf_field() }}<\/code>was zum Einreichen von Laravel-Formularen erforderlich ist.<\/p>\n<p>Angenommen, Sie senden die Post-Anforderung an die <code>store()<\/code>Methode Ihres Controllers, schreiben Sie einen Code, der das Bild wie folgt auf dem Server speichert.<\/p>\n<pre><code>public function store(Request $request)\n{\n\u00a0\u00a0\u00a0\u00a0if($request-&gt;hasFile('profile_image')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename with extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenamewithextension = $request-&gt;file('profile_image')-&gt;getClientOriginalName();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename without extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$extension = $request-&gt;file('profile_image')-&gt;getClientOriginalExtension();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/filename to store\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenametostore = $filename.'_'.time().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Upload File\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images', $filenametostore);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Compress Image Code Here\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect('ROUTE_HERE')-&gt;with('success', \"Image uploaded successfully.\");\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Dieser Code erstellt einen eindeutigen Dateinamen und speichert die Datei im Verzeichnis &#8218;profile_images&#8216;. Laravel generiert automatisch ein &#8218;profile_images&#8216;-Verzeichnis unter &#8218;public\/storage&#8216;, wenn es nicht existiert.<\/p>\n<p>Wie bereits erw\u00e4hnt, ist es besser, das Bild zum Zeitpunkt des Hochladens zu optimieren. Wir sind mit dem Code zum Hochladen eines Bildes fertig. Jetzt m\u00fcssen wir es komprimieren. Ich werde 2 Dienste behandeln \u2013 <a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">TinyPNG<\/a> und <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it,<\/a> die die APIs zum Komprimieren von Bildern im <a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">laufenden<\/a> <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Betrieb<\/a> bereitstellen. Sehen wir sie uns einzeln an.<\/p>\n<h3>Komprimieren Sie Bilder mit TinyPNG in Laravel<\/h3>\n<p>Um Bilder mit der TinyPNG-API zu komprimieren, ben\u00f6tigen Sie Ihren <a href=\"https:\/\/tinypng.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">API-Schl\u00fcssel<\/a>. Der Prozess ist unkompliziert. Registrieren Sie Ihre E-Mail-Adresse bei ihnen und sie senden Ihren Entwicklerschl\u00fcssel.<\/p>\n<p>Sobald Sie den API-Schl\u00fcssel erhalten haben, f\u00fcgen Sie ihn in die <code>.env<\/code>Datei ein.<\/p>\n<p>Installieren Sie danach ein TinyPNG-Paket mit dem Befehl:<\/p>\n<pre><code>composer require tinify\/tinify<\/code><\/pre>\n<p>Bei der Paketinstallation m\u00fcssen wir einen Code schreiben, der das hochgeladene Bild mit TinyPNG komprimiert.<\/p>\n<p>Schreiben Sie einen Komprimierungscode direkt unter die Zeile, die das Bild hochl\u00e4dt.<\/p>\n<pre><code>\/\/Compress Image Code Here\n$filepath = public_path('storage\/profile_images\/'.$filenametostore);\n\u00a0\ntry {\n\u00a0\u00a0\u00a0\u00a0TinifysetKey(env(\"TINIFY_API_KEY\"));\n\u00a0\u00a0\u00a0\u00a0$source = TinifyfromFile($filepath);\n\u00a0\u00a0\u00a0\u00a0$source-&gt;toFile($filepath);\n} catch(TinifyAccountException $e) {\n\u00a0\u00a0\u00a0\u00a0\/\/ Verify your API key and account limit.\n\u00a0\u00a0\u00a0\u00a0return redirect('ROUTE_HERE')-&gt;with('error', $e-&gt;getMessage());\n} catch(TinifyClientException $e) {\n\u00a0\u00a0\u00a0\u00a0\/\/ Check your source image and request options.\n\u00a0\u00a0\u00a0\u00a0return redirect('ROUTE_HERE')-&gt;with('error', $e-&gt;getMessage());\n} catch(TinifyServerException $e) {\n\u00a0\u00a0\u00a0\u00a0\/\/ Temporary issue with the Tinify API.\n\u00a0\u00a0\u00a0\u00a0return redirect('ROUTE_HERE')-&gt;with('error', $e-&gt;getMessage());\n} catch(TinifyConnectionException $e) {\n\u00a0\u00a0\u00a0\u00a0\/\/ A network connection error occurred.\n\u00a0\u00a0\u00a0\u00a0return redirect('ROUTE_HERE')-&gt;with('error', $e-&gt;getMessage());\n} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\/\/ Something else went wrong, unrelated to the Tinify API.\n\u00a0\u00a0\u00a0\u00a0return redirect('ROUTE_HERE')-&gt;with('error', $e-&gt;getMessage());\n}<\/code><\/pre>\n<p>Der obige Code nimmt ein Bild aus dem hochgeladenen Verzeichnis, sendet es zur Komprimierung an den TinyPNG-Server und speichert das komprimierte Bild nach Erhalt einer Antwort im selben Verzeichnis.<\/p>\n<p>Dieser Vorgang l\u00e4uft im Hintergrund. Sie m\u00fcssen sich keine Gedanken dar\u00fcber machen, wie das Bild an den TinyPNG-Server gesendet wird und wie es die API-Antwort empf\u00e4ngt. Die TinyPNG-Bibliothek erledigt alle Aufgaben f\u00fcr Sie.<\/p>\n<p>Versuchen Sie jetzt, das Bild hochzuladen, und Sie sollten sehen, dass Ihr Bild komprimiert wird.<\/p>\n<h3>Komprimieren Sie Bilder mit reSmush.it in Laravel<\/h3>\n<p>TinyPNG funktioniert gut, hat jedoch eine Beschr\u00e4nkung auf die Optimierung von 500 kostenlosen Bildern pro Monat. Wenn Sie mehr als 500 Bilder komprimieren m\u00f6chten, m\u00fcssen Sie daf\u00fcr bezahlen. Alternativ k\u00f6nnen Benutzer einen kostenlosen Dienst von reSmush.it f\u00fcr die Bildkomprimierung ausw\u00e4hlen. Zum Zeitpunkt der Erstellung dieses Artikels komprimiert reSmush.it mehr als 7 Milliarden Bilder. Dies ist genug, um \u00fcber die Popularit\u00e4t dieses Dienstes zu sagen.<\/p>\n<p>Schreiben Sie also den folgenden Code, der Bilder mit reSmush.it in Laravel komprimiert.<\/p>\n<pre><code>\/\/Compress Image Code Here\n$filepath = public_path('storage\/profile_images\/'.$filenametostore);\n$mime = mime_content_type($filepath);\n$output = new CURLFile($filepath, $mime, $filenametostore);\n$data = [\"files\" =&gt; $output];\n\u00a0\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, 'http:\/\/api.resmush.it\/?qlty=80');\ncurl_setopt($ch, CURLOPT_POST,1);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $data);\n$result = curl_exec($ch);\nif (curl_errno($ch)) {\n\u00a0\u00a0\u00a0\u00a0$result = curl_error($ch);\n}\ncurl_close ($ch);\n\u00a0\n$arr_result = json_decode($result);\n\u00a0\n\/\/ store the optimized version of the image\n$ch = curl_init($arr_result-&gt;dest);\n$fp = fopen($filepath, 'wb');\ncurl_setopt($ch, CURLOPT_FILE, $fp);\ncurl_setopt($ch, CURLOPT_HEADER, 0);\ncurl_exec($ch);\ncurl_close($ch);\nfclose($fp);<\/code><\/pre>\n<p>Ich habe <code>?qlty=80<\/code>im obigen Code den Qualit\u00e4tswert als 80 \u00fcbergeben. Sie k\u00f6nnen mit verschiedenen Qualit\u00e4tswerten spielen.<\/p>\n<p>Ich hoffe, Sie verstehen, wie Sie Bilder in Laravel 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\/tinypng-bilder-mit-php-komprimieren\/\" title=\"TinyPNG Bilder mit PHP komprimieren\">TinyPNG Bilder mit PHP komprimieren<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/bildoptimierung-mit-artisansweb-image-optimizer-package\/\" title=\"Bildoptimierung mit artisansweb\/image-optimizer Package\">Bildoptimierung mit artisansweb\/image-optimizer Package<\/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<\/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>Lassen Sie uns untersuchen, wie Sie Bilder in Laravel hochladen und komprimieren. Wir verwenden die TinyPNG-Bibliothek, um die hochgeladenen Bilder zu komprimieren. Auf diese Weise k\u00f6nnen wir uns verbessern<\/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":[204,496],"tags":[845],"class_list":["post-25069","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elementor-3","category-laravel","tag-affiai-de"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25069","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=25069"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25069\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/21621"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=25069"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=25069"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=25069"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}