Maison > Article > développement back-end > Comment créer des vignettes à partir d'images téléchargées tout en préservant l'image originale ?
Création de vignettes lors du téléchargement d'une image
Lorsque les utilisateurs téléchargent des images , il est courant de créer des miniatures à côté de l'image originale. Cela permet un chargement plus rapide d'images plus petites tout en conservant une version de meilleure qualité à afficher si nécessaire.
Structure de la base de données
Dans ce cas, la base de données comporte deux colonnes pour stocker les images : user_pic pour l'image originale et user_pic_small pour la vignette.
Formulaire de téléchargement d'image
Le formulaire de téléchargement d'image, imageupload.php, gère le téléchargement et les insertions de fichiers l'image en taille réelle dans la base de données.
Script PHP de traitement d'image
Le script PHP, media.profileimage.upload.php, vérifie si une image a été téléchargée et crée une vignette si nécessaire.
ImageMagick (Facultatif)
ImageMagick peut être utilisé pour générer des vignettes plus efficacement. Voici un exemple utilisant 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); }
Exemple de fonction
Un autre exemple de fonction, makeThumbnails() utilise les fonctions d'image de PHP pour créer des vignettes :
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"); }
En mettant en œuvre ces techniques, vous pouvez créer et stocker des vignettes à côté des images originales, optimisant ainsi les performances du site Web et améliorant l'expérience utilisateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!