Pendant le traitement d'image PHP, nous devons souvent copier une partie de l'image d'une ressource à une autre. La fonction ImageCopy est depuis longtemps un vieil ami dans le traitement d'image, tandis que ImageGetClip est une fonction relativement rarement utilisée mais très pratique. Vous êtes-vous déjà demandé quelle flexibilité et des fonctions puissantes que ces deux fonctions peuvent apporter à vos opérations de traitement d'image lorsqu'elles sont combinées? Cet article vous donnera une compréhension approfondie de la façon d'utiliser ImageGetClip et ImageCopopy pour obtenir des opérations précises de décollement d'images et de copie.
ImageGetClip est une fonction de la bibliothèque GD utilisée pour obtenir la région de découpage de l'image actuelle. Il renvoie un tableau contenant quatre valeurs limites de la zone de recadrage d'image: x , y , largeur et hauteur . Ceci est très utile lorsque vous devez juger dynamiquement ou réutiliser les zones de culture.
$clip = imagegetclip($srcImg);
print_r($clip);
Exemple de sortie:
Array
(
[x] => 0
[y] => 0
[width] => 200
[height] => 150
)
ImageCopy est une fonction utilisée pour copier une partie de l'image source à l'image cible, et son prototype est le suivant:
bool imagecopy(
GdImage $dst_image,
GdImage $src_image,
int $dst_x,
int $dst_y,
int $src_x,
int $src_y,
int $src_width,
int $src_height
)
Il peut être copié dans l'image cible en fonction des coordonnées et de la largeur et de la hauteur, et est un outil indispensable dans les coutures d'image et la production de vignettes.
Examinons un scénario d'application pratique: vous souhaitez recadrer une zone à partir de l'image source et la copier dans un emplacement spécifique dans une autre image. Cette zone n'est pas fixe, mais dépend de la zone courte de l'image actuelle. Pour le moment, vous devez utiliser ImageGetClip pour obtenir la zone recadrée, puis le copier avec ImageCopy .
// Chargez la source et les images cibles
$srcImg = imagecreatefromjpeg('https://gitbox.net/images/source.jpg');
$dstImg = imagecreatetruecolor(300, 300);
// Obtenez la zone courte de l'image source
$clip = imagegetclip($srcImg);
// Utiliser des informations sur la zone des cultures imagecopy fonctionner
imagecopy(
$dstImg, // Image cible
$srcImg, // Image source
50, 50, // Image cible上的位置
$clip['x'], // Image source开始的 x coordonner
$clip['y'], // Image source开始的 y coordonner
$clip['width'], // Largeur de la zone de copie
$clip['height'] // La hauteur de la zone de copie
);
// Image de sortie
header('Content-Type: image/jpeg');
imagejpeg($dstImg);
// Libérer les ressources
imagedestroy($srcImg);
imagedestroy($dstImg);
Réglage de la zone de recadrage : Si ImageSetClip a été utilisé avant de limiter la zone de fonctionnement de l'image, ImageGetClip reviendra dans la zone de réglage. Assurez-vous de comprendre le contexte de recadrage actuel.
Compatibilité du format d'image : différentes fonctions de chargement de format d'image sont différentes. Par exemple, PNG utilise ImageCreateFrommpng pour s'assurer qu'il correspond au format d'image source.
Traitement d'arrière-plan transparent : si l'image cible est PNG et doit conserver un arrière-plan transparent, utilisez ImagesVealpha et ImageAlPhable
La combinaison de ImageGetClip et ImageCopy fournit un moyen plus flexible de traitement d'image PHP. En obtenant des zones recadrées et en copie avec précision, une logique de traitement d'image plus complexe peut être obtenue, comme les mosaïques régionales, le flou local, les coutures d'image, etc. L'apprentissage de cette technique peut considérablement améliorer votre efficacité et votre précision dans les images de traitement.
Dans le monde du traitement d'images, les détails déterminent le succès ou l'échec. J'espère que grâce à cet article, vous aurez une compréhension plus approfondie de la combinaison de ces deux fonctions. Si vous créez des outils d'image en ligne comme https://gitbox.net/tools/crop-editor , cette astuce est certainement une partie essentielle.