{"id":24759,"date":"2021-05-25T11:25:00","date_gmt":"2021-05-25T08:25:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24759"},"modified":"2021-10-18T02:39:14","modified_gmt":"2021-10-17T23:39:14","slug":"erstellen-sie-eine-miniaturansicht-in-laravel-mit-der-interventionsbildbibliothek","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/erstellen-sie-eine-miniaturansicht-in-laravel-mit-der-interventionsbildbibliothek\/","title":{"rendered":"Erstellen Sie eine Miniaturansicht in Laravel mit der Interventionsbildbibliothek"},"content":{"rendered":"<p>Auf der Website besch\u00e4ftigen wir uns immer mit den Bildern. Je nach Anforderung verwenden wir verschiedene Bildversionen. Es ist eine gute Praxis f\u00fcr Entwickler, verschiedene Versionen oder Miniaturansichten des einzelnen Bildes zu erstellen. Diese Miniaturansichten k\u00f6nnen verwendet werden, w\u00e4hrend je nach Containergr\u00f6\u00dfe unterschiedliche Bildgr\u00f6\u00dfen angezeigt werden. Das Anzeigen eines Bildes, das der Containergr\u00f6\u00dfe entspricht, spart Bandbreite und verbessert die Ladezeit der Seite. Das Anzeigen eines gro\u00dfen Bildes in einem kleinen Container ist eine schlechte Vorgehensweise und beeintr\u00e4chtigt die Ladezeit der Seite. Daher wird empfohlen, mehrere Miniaturansichten eines Bildes zu erstellen und bei Bedarf die entsprechende Version zu verwenden.<\/p>\n<p>In diesem Artikel untersuchen wir, wie Sie mit der Interventionsbildbibliothek in Laravel ein Miniaturbild erstellen. <a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Intervention Image<\/a> ist kostenlos und eine der beliebtesten Bibliotheken zur Bildbearbeitung. Im Hintergrund verwendet diese Bibliothek die GD-Bibliothek und Imagick zur Bildbearbeitung.<\/p>\n<p>F\u00fcr dieses Tutorial werde ich 3 Miniaturansichten erstellen \u2013 klein, mittel, gro\u00df mit den Gr\u00f6\u00dfen 150 93, 300 * 185 bzw. 550 340. \u00c4ndern Sie diese Gr\u00f6\u00dfen nach Ihren W\u00fcnschen.<\/p>\n<h3>Einstieg<\/h3>\n<p>Um zu beginnen, m\u00fcssen Sie zuerst die Intervention Image-Bibliothek in Laravel installieren. \u00d6ffnen Sie das Terminal in Ihrem Projekt-Stammverzeichnis und f\u00fchren Sie den folgenden Befehl aus:<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>\u00d6ffnen Sie nach der Installation der Bibliothek die <code>config\/app.php<\/code>Datei und f\u00fcgen Sie die folgenden Zeilen hinzu.<\/p>\n<p>F\u00fcgen Sie dem <code>$providers<\/code>Array die Dienstanbieter f\u00fcr dieses Paket hinzu .<\/p>\n<pre><code>InterventionImageImageServiceProvider::class<\/code><\/pre>\n<p>F\u00fcgen Sie die Fassade zum <code>$aliases<\/code>Array hinzu.<\/p>\n<pre><code>'Image' =&gt; InterventionImageFacadesImage::class<\/code><\/pre>\n<p>Als n\u00e4chstes m\u00fcssen wir zum Speichern der Bilder ein Verzeichnis erstellen. Gehen Sie zum Terminal und f\u00fchren Sie den Befehl wie folgt aus:<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Dieser Befehl erstellt ein Speicherverzeichnis (symbolischer Link) unter dem \u00f6ffentlichen Ordner. In diesen Ordner lade ich das Originalbild und seine Miniaturansichten hoch.<\/p>\n<h3>Erstellen Sie eine Miniaturansicht in Laravel<\/h3>\n<p>Wir haben uns alle mit dem Grundsetup eingerichtet und k\u00f6nnen nun den eigentlichen Code schreiben. Lassen Sie uns ein Formular in Ihrer Ansichtsdatei erstellen.<\/p>\n<pre><code>&lt;form action=\"{{ url('PASS_ACTION_URL') }}\" 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 Controller m\u00fcssen Sie die Bibliothek Fassade &#8218;Image&#8216; hinzuf\u00fcgen, die wir in der <code>config\/app.php<\/code>Datei hinzugef\u00fcgt haben .<\/p>\n<pre><code>&lt;?php\n\u00a0\u00a0\nnamespace AppHttpControllers;\n\u00a0\u00a0\nuse IlluminateHttpRequest;\nuse Image;\n\u00a0\u00a0\nclass ImageController extends Controller\n{\n\u00a0\u00a0\n}<\/code><\/pre>\n<p>Durch das Hinzuf\u00fcgen der Fassade k\u00f6nnen wir Funktionen der Intervention Image Library aufrufen. Im folgenden Code werde ich das Bild an zwei Stellen hochladen. Das Originalbild geht direkt in den <code>storage\/profile_images<\/code>Ordner. Die Miniaturansichten werden im <code>storage\/profile_images\/thumbnail<\/code>Verzeichnis gespeichert. Wir laden zuerst das Originalbild in den Thumbnail-Ordner hoch und \u00e4ndern dann die Gr\u00f6\u00dfe.<\/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\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\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\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\/\/small thumbnail name\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$smallthumbnail = $filename.'_small_'.time().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/medium thumbnail name\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$mediumthumbnail = $filename.'_medium_'.time().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/large thumbnail name\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$largethumbnail = $filename.'_large_'.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\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images\/thumbnail', $smallthumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images\/thumbnail', $mediumthumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images\/thumbnail', $largethumbnail);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/create small thumbnail\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$smallthumbnailpath = public_path('storage\/profile_images\/thumbnail\/'.$smallthumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;createThumbnail($smallthumbnailpath, 150, 93);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/create medium thumbnail\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$mediumthumbnailpath = public_path('storage\/profile_images\/thumbnail\/'.$mediumthumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;createThumbnail($mediumthumbnailpath, 300, 185);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/create large thumbnail\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$largethumbnailpath = public_path('storage\/profile_images\/thumbnail\/'.$largethumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;createThumbnail($largethumbnailpath, 550, 340);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect('image')-&gt;with('success', \"Image uploaded successfully.\");\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Im obigen Code speichere ich das Bild mit 3 Formaten klein, mittel und gro\u00df. Nach dem Speichern rufen wir die Methode auf <code>createThumbnail<\/code>und \u00fcbergeben die erforderliche Breite und H\u00f6he an die Methode. Lassen Sie uns diese Funktion unten definieren. Diese Funktion sollte in den gleichen Controller gehen.<\/p>\n<pre><code>\/**\n\u00a0* Create a thumbnail of specified size\n\u00a0*\n\u00a0* @param string $path path of thumbnail\n\u00a0* @param int $width\n\u00a0* @param int $height\n\u00a0*\/\npublic function createThumbnail($path, $width, $height)\n{\n\u00a0\u00a0\u00a0\u00a0$img = Image::make($path)-&gt;resize($width, $height, function ($constraint) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0$img-&gt;save($path);\n}<\/code><\/pre>\n<p>Hier \u00e4ndern wir die Gr\u00f6\u00dfe des Bildes proportional. Dabei behalten wir das Seitenverh\u00e4ltnis bei und das Bild wird nicht abgeschnitten.<\/p>\n<p>Wenn Sie nach einer harten Ernte suchen, ersetzen Sie die folgenden Zeilen<\/p>\n<pre><code>$img = Image::make($path)-&gt;resize($width, $height, function ($constraint) {\n\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n});\n$img-&gt;save($path);<\/code><\/pre>\n<p>Mit<\/p>\n<pre><code>$img = Image::make($path)-&gt;resize($width, $height)-&gt;save($path);<\/code><\/pre>\n<p>Ich hoffe, Sie verstehen, wie Sie mit der Interventionsbildbibliothek in Laravel ein Miniaturbild erstellen. Ich w\u00fcrde gerne Ihre Meinung im Kommentarbereich unten h\u00f6ren.<\/p>\n<h4>Zum Thema passende Artikel<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/bildgrose-in-laravel-mithilfe-der-interventions-bildbibliothek-andern\/\" title=\"Bildgr\u00f6\u00dfe in Laravel mithilfe der Interventions-Bildbibliothek \u00e4ndern\">Bildgr\u00f6\u00dfe in Laravel mithilfe der Interventions-Bildbibliothek \u00e4ndern<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-laden-und-komprimieren-sie-bilder-in-laravel\/\" title=\"Eine Anleitung zum Hochladen und Komprimieren von Bildern in Laravel\">Eine Anleitung zum Hochladen und Komprimieren von Bildern in Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/laden-sie-mehrere-bilder-in-laravel-hoch-und-aendern-sie-die-groesse\/\" title=\"Laden Sie mehrere Bilder in Laravel hoch und \u00e4ndern Sie die Gr\u00f6\u00dfe\">Laden Sie mehrere Bilder in Laravel hoch und \u00e4ndern Sie die Gr\u00f6\u00dfe<\/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 beim Hochladen des Bildes eine Miniaturansicht in Laravel erstellen? In diesem Artikel untersuchen wir, wie Sie mit Intervention Image mehrere Miniaturansichten erstellen<\/p>\n","protected":false},"author":1,"featured_media":21673,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[496],"tags":[845],"class_list":["post-24759","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-de"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/24759","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=24759"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/24759\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/21673"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=24759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=24759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=24759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}