Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstelle ich Miniaturansichten von hochgeladenen Bildern und behalte dabei das Originalbild bei?

Wie erstelle ich Miniaturansichten von hochgeladenen Bildern und behalte dabei das Originalbild bei?

Susan Sarandon
Susan SarandonOriginal
2024-11-07 10:20:02583Durchsuche

How to create thumbnails from uploaded images while preserving the original image?

Erstellen einer Miniaturansicht aus einem hochgeladenen Bild unter Beibehaltung des Originals

Erstellen von Miniaturansichten beim Hochladen von Bildern

Wenn Benutzer Bilder hochladen ist es üblich, Miniaturansichten neben dem Originalbild zu erstellen. Dies ermöglicht ein schnelleres Laden kleinerer Bilder und behält bei Bedarf eine höherwertige Version für die Anzeige bei.

Datenbankstruktur

In diesem Fall verfügt die Datenbank über zwei Spalten Bilder speichern: user_pic für das Originalbild und user_pic_small für das Miniaturbild.

Bild-Upload-Formular

Das Bild-Upload-Formular, imageupload.php, übernimmt das Hochladen und Einfügen von Dateien das Bild in voller Größe in die Datenbank.

Bildverarbeitungs-PHP-Skript

Das PHP-Skript media.profileimage.upload.php prüft, ob ein Bild hochgeladen wurde und erstellt bei Bedarf eine Miniaturansicht.

ImageMagick (Optional)

ImageMagick kann verwendet werden, um Miniaturansichten effizienter zu erstellen. Hier ist ein Beispiel mit Imagick:

/**
 * @param string $img Image path
 * @param int $width
 * @param int $height
 * @param int $quality
 * @return bool
 * @throws Exception
 */
function generateThumbnail($img, $width, $height, $quality = 90)
{
    $imagick = new Imagick(realpath($img));
    $imagick->setImageFormat('jpeg');
    $imagick->setImageCompression(Imagick::COMPRESSION_JPEG);
    $imagick->setImageCompressionQuality($quality);
    $imagick->thumbnailImage($width, $height, false, false);
    $filename_no_ext = reset(explode('.', $img));
    return file_put_contents($filename_no_ext . '_thumb' . '.jpg', $imagick);
}

Beispielfunktion

Eine weitere Beispielfunktion, makeThumbnails(), verwendet die Bildfunktionen von PHP, um Miniaturansichten zu erstellen:

function makeThumbnails($updir, $img, $id)
{
    $width = 134;
    $height = 189;
    $thumb_beforeword = "thumb";
    list($original_width, $original_height) = getimagesize("$updir$id" . '_' . "$img");
    if ($original_width > $original_height) {
        $new_width = $width;
        $new_height = intval($original_height * $new_width / $original_width);
    } else {
        $new_height = $height;
        $new_width = intval($original_width * $new_height / $original_height);
    }
    $old_image = imagecreatefromjpeg("$updir$id" . '_' . "$img");
    $new_image = imagecreatetruecolor($width, $height);
    imagecopyresized($new_image, $old_image,
        intval(($width - $new_width) / 2),
        intval(($height - $new_height) / 2),
        0, 0,
        $new_width, $new_height,
        $original_width, $original_height);
    imagejpeg($new_image, "$updir$id" . '_' . "$thumb_beforeword" . "$img");
}

Durch die Implementierung dieser Techniken können Sie Miniaturansichten neben den Originalbildern erstellen und speichern und so die Website-Leistung optimieren und das Benutzererlebnis verbessern.

Das obige ist der detaillierte Inhalt vonWie erstelle ich Miniaturansichten von hochgeladenen Bildern und behalte dabei das Originalbild bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn