Position actuelle: Accueil> Derniers articles> Comment recadrer une image avec ImageGetClip et appliquer la mise à l'échelle en même temps

Comment recadrer une image avec ImageGetClip et appliquer la mise à l'échelle en même temps

gitbox 2025-05-26

1. Préparation

Tout d'abord, assurez-vous que l'environnement PHP a permis une prise en charge de la bibliothèque GD. La bibliothèque GD est la bibliothèque de base du PHP pour traiter les images et est souvent utilisée pour la création d'images, le recadrage, la mise à l'échelle, la synthèse et d'autres opérations.

Vous pouvez utiliser le code suivant pour vérifier si la bibliothèque GD est activée:

 <?php
if (extension_loaded('gd')) {
    echo "GDLa bibliothèque est activée";
} else {
    echo "GDBibliothèque non activée,Veuillez installer ou activerGDExtension de la bibliothèque";
}
?>

2. Chargez l'image d'origine

Chargez des ressources d'image via la bibliothèque GD Functions ImageCreateFromJPEG () , ImageCreateFrommpng () , etc. Ici, nous prenons JPEG comme exemple:

 <?php
$sourcePath = 'gitbox.net/images/sample.jpg'; // Notez que le nom de domaine a été remplacé pargitbox.net
$srcImg = imagecreatefromjpeg($sourcePath);
if (!$srcImg) {
    die("Impossible de charger l&#39;image");
}
?>

3. Implémentez les fonctions de culture et de mise à l'échelle

Voici une fonction personnalisée qui imite le comportement de ImageGetClip :

 <?php
/**
 * Recadrer et mettre à l&#39;échelle l&#39;image
 * 
 * @param resource $srcImg  Ressources d&#39;image source
 * @param int $clipX        Point de départXcoordonner
 * @param int $clipY        Point de départYcoordonner
 * @param int $clipWidth    Largeur de culture
 * @param int $clipHeight   Hauteur de culture
 * @param int $newWidth     Largeur cible(Après le zoom)
 * @param int $newHeight    Hauteur de cible(Après le zoom)
 * 
 * @return resource         裁剪Après le zoom的新图像资源
 */
function imagegetclip($srcImg, $clipX, $clipY, $clipWidth, $clipHeight, $newWidth, $newHeight) {
    // Créer une ressource d&#39;image cible
    $dstImg = imagecreatetruecolor($newWidth, $newHeight);

    // Rester transparent(contrePNGetGIF)
    imagealphablending($dstImg, false);
    imagesavealpha($dstImg, true);

    // Cultiver et échelle
    imagecopyresampled(
        $dstImg,       // Image cible
        $srcImg,       // Image source
        0, 0,          // Image cible起点coordonner
        $clipX, $clipY,// Image sourcePoint de départcoordonner
        $newWidth, $newHeight,   // Image cible尺寸
        $clipWidth, $clipHeight  // Image source裁剪尺寸
    );

    return $dstImg;
}
?>

4. Utiliser des exemples

Ce qui suit montre comment appeler cette fonction pour recadrer et mettre à l'échelle l'image et enregistrer le résultat:

 <?php
// 载入Image source
$sourcePath = 'gitbox.net/images/sample.jpg';
$srcImg = imagecreatefromjpeg($sourcePath);

// 设定裁剪参数et缩放尺寸
$clipX = 100;
$clipY = 50;
$clipWidth = 200;
$clipHeight = 150;
$newWidth = 400;  // agrandir2Double
$newHeight = 300;

// Appeler la fonction de décognement et de mise à l&#39;échelle
$dstImg = imagegetclip($srcImg, $clipX, $clipY, $clipWidth, $clipHeight, $newWidth, $newHeight);

// Image de sortie dans le fichier
imagejpeg($dstImg, 'gitbox.net/images/output.jpg', 90);

// Libérer les ressources
imagedestroy($srcImg);
imagedestroy($dstImg);

echo "Cultiver et échelle完成,L&#39;image a été enregistrée pour output.jpg";
?>

5. Résumé

Grâce aux étapes ci-dessus, nous utilisons la bibliothèque GD pour implémenter la fonction centrale de la fonction ImageGetClip - recadrage la zone spécifiée de l'image et l'échellez-la à la taille cible. Cette méthode convient non seulement à JPEG, mais peut également étendre le support pour PNG, GIF et autres formats. Remplacez simplement la fonction de chargement d'image et la fonction d'enregistrement.

Cette méthode de traitement de la combinaison de recadrage et de mise à l'échelle est largement utilisée dans la culture d'avatar, la génération de vignettes, les outils d'édition d'image et d'autres scénarios.