Heim > Artikel > Backend-Entwicklung > Wie erstelle ich Miniaturansichten von hochgeladenen Bildern und behalte dabei das Originalbild bei?
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!