Bildgröße in PHP mit Intervention Image Library ändern
Suchen Sie nach Möglichkeiten zum Ändern der Größe von Bildern in PHP? Während der Arbeit an der Webanwendung müssen wir verschiedene Miniaturansichten des Originalbilds erstellen. Das Thumbnail ist die skalierte Version Ihres Originalbildes. In diesem Artikel untersuchen wir, wie Sie Bilder in PHP hochladen und skalieren.
Warum sollten wir die Größe von Bildern ändern?
Auf der Website gibt es mehrere Szenarien, in denen wir eine kurze Version eines großen Bildes anzeigen müssen. Ein beliebtes Beispiel ist die Bildergalerie. In der Galerie haben wir früher eine Liste mit kleinen Bildern angezeigt. Wenn ein Benutzer auf das kleine Bild klickt, wird das große Bild im Popup geöffnet. Ein weiteres Beispiel ist die Anzeige verwandter Artikel, in denen wir kleine Bilder zusammen mit dem Titel und der Beschreibung eines Beitrags anzeigen.
In diesen Szenarien müssen wir ein kleines Bild (Thumbnail) mit unserem Originalbild generieren. Ein kleines Thumbnail reduziert die Größe Ihrer Seiten. Da Sie ein kleines Thumbnail verwenden, benötigt der Browser eine geringe Bandbreite zum Laden des Bildes. Es wird der Website einige Vorteile hinzufügen. Einige von ihnen sind:
- Verbessert die Serverleistung
- Bandbreite reduzieren
- Seitengeschwindigkeit verbessern
Sehen wir uns jedoch an, wie Sie die Größe des Bildes in PHP ändern.
Einstieg
Intervention Image ist eine Open-Source-Bibliothek, die als Tool zur Größenänderung von Bildern fungiert. Unter der Haube verwendet Intervention Image GD Library und Imagick für die Bildverarbeitung und -manipulation.
Um zu beginnen, müssen Sie die Intervention Image-Bibliothek in Ihrer Anwendung installieren. Ich empfehle Composer für die Installation einer Bibliothek.
Öffnen Sie das Terminal in Ihrem Projektstammverzeichnis und führen Sie den folgenden Befehl aus.
composer require intervention/image
Nach der Installation der Bibliothek müssen Sie deren Umgebung in Ihre Anwendung einbeziehen. Fügen Sie dazu unten zwei Zeilen in die PHP-Datei ein.
<?php
// include composer autoload
require 'vendor/autoload.php';
use InterventionImageImageManagerStatic as Image;
Um das Bild hochzuladen und die Größe zu ändern, benötigen wir ein Formular, in dem man das Bild durchsuchen und auf die Schaltfläche "Senden" klicken kann. Verwenden Sie den folgenden HTML-Code, der die Dateieingabe und eine Schaltfläche zum Senden enthält.
<form method="post" enctype="multipart/form-data">
<p><input type="file" name="image" /></p>
<input type="submit" name="submit" value="Submit">
</form>
Bildgröße in PHP mit Interventionsbild ändern
Wir haben die Bibliothek installiert und ein Formular erstellt. Als nächstes müssen wir das Bild im laufenden Betrieb hochladen und die Größe ändern. Ich werde zwei Verzeichnisse erstellen uploads
und thumbnails
. In dem uploads
Ordner speichern wir das Originalbild. Die Miniaturansicht des Bildes wird im thumbnails
Verzeichnis gespeichert .
Verwenden Sie den folgenden Code, der die Original- und Miniaturversion des Bildes in den Verzeichnissen uploads
und speichert thumbnails
.
<?php
require 'vendor/autoload.php';
use InterventionImageImageManagerStatic as Image;
$allowed_mime_type = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');
if (isset($_POST['submit'])) {
if (in_array($_FILES['image']['type'], $allowed_mime_type)) {
if (!file_exists('uploads')) {
mkdir('uploads', 0755);
}
$filename = time().'_'.$_FILES['image']['name'];
$filepath = 'uploads/'. $filename;
move_uploaded_file($_FILES['image']['tmp_name'], $filepath);
if (!file_exists('uploads/thumbnails')) {
mkdir('uploads/thumbnails', 0755);
}
$thumbnailpath = 'uploads/thumbnails/'. $filename;
$img = Image::make($filepath);
$img->resize(300, null, function ($constraint) {
$constraint->aspectRatio();
});
$img->save($thumbnailpath);
}
}
Im obigen Code habe ich die Breite als 300 übergeben und die Größe des Bildes geändert, indem ich das Seitenverhältnis beibehalten habe. Sie können den Breitenwert gemäß Ihren Anforderungen übergeben. Es wird empfohlen, das Seitenverhältnis beizubehalten, wenn Sie die Bildgröße ändern. Bei Verwendung des Seitenverhältnisses wird das Bild nicht gestreckt. Wenn Sie jedoch nach einer harten Ernte suchen, ersetzen Sie die folgenden Zeilen
$img->resize(300, null, function ($constraint) {
$constraint->aspectRatio();
});
Mit
$img->resize(300, 150)->save($thumbnailpath);
Fazit
In diesem Tutorial haben wir untersucht, wie Sie die Größe von Bildern ändern, indem Sie ihr Seitenverhältnis beibehalten. Wir haben auch einen Code geschrieben, der das Bild hart zuschneidet. Die Interventionsbildbibliothek bietet einige weitere Optionen für eine resize
Methode. Sie können mehr darüber in ihrer Dokumentation lesen .
Zum Thema passende Artikel
- Bildgröße in Laravel mithilfe der Interventions-Bildbibliothek ändern
- Bildgröße in PHP mit TinyPNG ändern
- Datei-Upload per Drag & Drop mit JavaScript und PHP