✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Mehrere Bilder in PHP hochladen und komprimieren

192

Kürzlich fragte einer unserer Leser, wie man mehrere Bilder in PHP hochlädt und komprimiert. Es gibt bestimmte Szenarien, in denen wir Benutzern das Hochladen mehrerer Bilder ermöglichen müssen. 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ährend des Hochladevorgangs.

Warum müssen wir die Bilddateigröße reduzieren?

Zweifellos spielen Bilder eine wichtige Rolle auf Ihrer Website. Auffällige Bilder ziehen die Aufmerksamkeit der Leser auf sich und sie würden mehr Zeit auf der Website verbringen. Gleichzeitig verlangsamen großformatige Bilder Ihre Website. Da mehr Bandbreite benötigt wird, braucht Ihre Website länger, um die Webseiten zu laden. Die Websitebesitzer müssen darauf achten, die Bilddateigröße zu reduzieren und das beste Bildkomprimierungstool dafür zu verwenden.

Ich werde Ihnen 2 Möglichkeiten zeigen, Bilder zu komprimieren – TinyPNG und das Paket artisansweb/image-optimizer.

TinyPNG ist einer der beliebtesten Bildkomprimierungsdienste im Internet. Dieser Dienst ermöglicht die kostenlose Komprimierung von 500 Bildern pro Monat über ihre APIs. Für mehr als 500 Bilder müssen Sie diese bezahlen.

Wenn Sie mehr als 500 Bilder pro Monat optimieren müssen und nicht bezahlen möchten, dann nutzen Sie das Paket ‘artisansweb/image-optimizer’. Dieses Paket verwendet den reSmush.it- Dienst zur Bildoptimierung.

Ich würde empfehlen, beide Lösungen auszuprobieren, die Ausgabe zu vergleichen und die für Sie geeignete auszuwählen.

Lassen Sie uns jedoch einen Blick darauf werfen, wie Sie Bilder nach dem Hochladen komprimieren.

Erste Schritte mit TinyPNG

Um zu beginnen, benötigen Sie einen API-Schlüssel von TinyPNG. Klicken Sie hier, um Ihren API-Schlüssel zu erhalten. Sie müssen nur Ihren Namen und Ihre E-Mail-Adresse eingeben und Sie erhalten die E-Mail für Ihren Schlüssel.

Mehrere Bilder in PHP hochladen und komprimieren

Sobald Sie Ihren Entwicklerschlüssel erhalten haben, installieren Sie eine von TinyPNG bereitgestellte PHP-Bibliothek. Sie sollten Composer auf dem System installiert haben, um die Bibliothek zu installieren. Öffnen Sie das Terminal in Ihrem Projekt-Root-Verzeichnis und führen Sie den Befehl aus:

composer require tinify/tinify

So komprimieren Sie Bilder mit TinyPNG

Wie im Titel dieses Artikels erwähnt, werden wir sehen, wie Sie mehrere Bilder hochladen und komprimieren. Dazu müssen wir ein HTML-Formular erstellen, das Dateieingaben zum Durchsuchen mehrerer Bilder enthält. Erstellen index.phpund platzieren Sie den folgenden Code darin.

index.php

<form method="post" enctype="multipart/form-data" action="process_images.php">
    <p>
        <label>Upload Images</label>
        <input type="file" name="images[]" accept="image/*" multiple>
    </p>
    <button type="submit" name="submit">Submit</button>
</form>

Der Dateieingabe habe ich einen Namen als images[] gegeben. Dies liegt daran, dass wir serverseitig ein Array von Dateien benötigen, da der Benutzer mehrere Bilder durchsuchen wird.

Sobald wir die Bilder durchsuchen und auf die Schaltfläche "Senden" klicken, werden Formulardaten an die Datei gesendet process_images.php. Dies ist die Datei, in die wir einen Code zum Hochladen und Komprimieren von Bildern schreiben müssen.

process_images.php

<?php
// Increase PHP execution time
set_time_limit(0);
 
require_once("vendor/autoload.php");
TinifysetKey("YOUR_API_KEY");
 
if (isset($_POST['submit'])) {
    $supported_images = array('image/gif', 'image/jpg', 'image/jpeg', 'image/png');
 
    if (!file_exists(getcwd(). '/uploads')) {
        mkdir(getcwd(). '/uploads', 0777);
    }
  
    foreach($_FILES['images']['name'] as $key=>$val) {
        $file_name = $_FILES['images']['name'][$key];
  
        // get file extension
        $ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
  
        // get filename without extension
        $filenamewithoutextension = pathinfo($file_name, PATHINFO_FILENAME);
  
        if (in_array($_FILES['images']['type'][$key], $supported_images)) {
            $filename_to_store = $filenamewithoutextension.'_'.time().'.' .$ext;
            move_uploaded_file($_FILES['images']['tmp_name'][$key], getcwd().'/uploads/'.$filename_to_store);
  
            // optimize image using TinyPNG
            try {
                $source = TinifyfromFile(getcwd().'/uploads/'.$filename_to_store);
                $source->toFile(getcwd().'/uploads/'.$filename_to_store);
            } catch(Exception $e) {
                echo $e->getMessage();
                exit;
            }
        }
    }
    echo "Files uploaded successfully.";
}

Stellen Sie sicher, dass Sie den Platzhalter durch Ihren tatsächlichen API-Schlüssel ersetzen. Im obigen Code generieren wir einen eindeutigen Dateinamen, indem wir ihm Zeit anhängen. 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.

Bilder mit artisansweb/image-optimizer Package komprimieren

Ich habe das Image Optimizer- Paket entwickelt. Dieses Paket verwendet den reSmush.it- 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üssels noch eine Registrierung. Einfach einstecken und fertig.

Um mit dem Image Optimizer-Paket zu beginnen, installieren Sie es mit dem folgenden Befehl:

composer require artisansweb/image-optimizer

Als nächstes wird der Code in der process_image.phpwie folgt geändert.

<?php
// Increase PHP execution time
set_time_limit(0);
 
require_once("vendor/autoload.php");
 
use ArtisansWebOptimizer;
 
if (isset($_POST['submit'])) {
    $supported_images = array('image/gif', 'image/jpg', 'image/jpeg', 'image/png');
 
    if (!file_exists(getcwd(). '/uploads')) {
        mkdir(getcwd(). '/uploads', 0777);
    }
  
    foreach($_FILES['images']['name'] as $key=>$val) {
        $file_name = $_FILES['images']['name'][$key];
  
        // get file extension
        $ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
  
        // get filename without extension
        $filenamewithoutextension = pathinfo($file_name, PATHINFO_FILENAME);
  
        if (in_array($_FILES['images']['type'][$key], $supported_images)) {
            $filename_to_store = $filenamewithoutextension.'_'.time().'.' .$ext;
            move_uploaded_file($_FILES['images']['tmp_name'][$key], getcwd().'/uploads/'.$filename_to_store);
  
            // optimize image
            try {
                $img = new Optimizer();
                $source = getcwd().'/uploads/'.$filename_to_store;
                $img->optimize($source);
 
            } catch(Exception $e) {
                echo $e->getMessage();
                exit;
            }
        }
    }
    echo "Files uploaded successfully.";
}

Ich hoffe, Sie verstehen, wie Sie mehrere Bilder in PHP hochladen und komprimieren. Ich würde gerne Ihre Gedanken und Vorschläge im Kommentarbereich unten hören.

Zum Thema passende Artikel

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen