Maison  >  Article  >  développement back-end  >  Comment générer efficacement des vignettes à partir d’images téléchargées en PHP ?

Comment générer efficacement des vignettes à partir d’images téléchargées en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-07 16:41:03901parcourir

How to Efficiently Generate Thumbnails from Uploaded Images in PHP?

Création d'une vignette à partir d'une image téléchargée

La génération de vignettes pour les images téléchargées garantit qu'elles n'apparaissent pas déformées tout en préservant la qualité de l'image d'origine. Dans cette question, l'utilisateur cherche des conseils sur la création et le stockage des versions originales et miniatures des images téléchargées.

La configuration de la base de données de l'utilisateur comprend deux tables, « user_pic » et « user_pic_small », pour stocker l'original et la miniature. versions respectivement. Le code PHP fourni gère le téléchargement et le stockage des images, mais n'a pas la logique de création de vignettes.

Solution utilisant la bibliothèque GD de PHP :

La solution consiste à utiliser la bibliothèque GD de PHP pour manipuler et générer la vignette. Une fonction est définie pour prendre en entrée une image téléchargée, une taille désignée et une qualité. Il calcule les dimensions appropriées et crée une vignette avec des espaces noirs de taille proportionnelle pour garantir la cohérence.

Exemple d'utilisation :

function makeThumbnails($updir, $img, $id)
{
    // Define thumbnail size
    $thumbnail_width = 134;
    $thumbnail_height = 189;
    
    // Calculate dimensions
    // ...
    
    // Check image type and process
    if ($arr_image_details[2] == IMAGETYPE_GIF) {
        $imgt = "ImageGIF";
    } elseif ($arr_image_details[2] == IMAGETYPE_JPEG) {
        $imgt = "ImageJPEG";
    } elseif ($arr_image_details[2] == IMAGETYPE_PNG) {
        $imgt = "ImagePNG";
    }
    
    if ($imgt) {
        // Image manipulation
        // ...
        
        // Output the thumbnail
        $imgt($new_image, "$updir" . $id . '_' . "$thumb_beforeword" . "$img");
    }
}

Solution utilisant Imagick :

Cette solution exploite la bibliothèque Imagick, qui offre des capacités de traitement d'image plus avancées. La fonction génère des vignettes avec les dimensions et la qualité spécifiées, à l'aide des méthodes intégrées de la classe Imagick.

Exemple d'utilisation :

/**
 * Generate Thumbnail using Imagick class
 */
function generateThumbnail($img, $width, $height, $quality = 90)
{
    if (is_file($img)) {
        $imagick = new Imagick(realpath($img));
        
        // Image processing
        // ...
        
        // Output the thumbnail
        file_put_contents($filename_no_ext . '_thumb' . '.jpg', $imagick);
        return true;
    } else {
        throw new Exception("No valid image provided with {$img}.");
    }
}

Conclusion :

Les deux solutions offrent des moyens efficaces de créer une vignette à partir d'une image téléchargée tout en conservant sa qualité. L'approche choisie dépend des exigences spécifiques et des ressources disponibles de l'application.

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!

Déclaration:
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