Comment créer des vignettes à partir d'images téléchargées tout en préservant l'image originale ?

Susan Sarandon
Libérer: 2024-11-07 10:20:02
original
657 Les gens l'ont consulté

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

Création d'une vignette à partir d'une image téléchargée tout en préservant l'original

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);
}
Copier après la connexion

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");
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal