En PHP, le traitement de la culture d'image est une partie très courante des tâches de traitement d'image. Depuis PHP 5.5.0, PHP a une fonction d'imagecrop intégrée pour recadrer une partie d'une image, qui est plus concise et efficace à utiliser que la culture manuelle compliquée précédente.
Cet article introduira en détail comment utiliser correctement la fonction d'imagecrop , en particulier comment définir les coordonnées et les paramètres de largeur et de hauteur passés pendant la culture, en évitant les erreurs et les pièges courants.
Le prototype de la fonction ImageCrop est le suivant:
imagecrop(GdImage $image, array $rect): ?GdImage
$ Image : La ressource d'image à recadorder.
$ rect : un tableau associatif qui définit les coordonnées et les dimensions de la zone d'écrêtage, qui doit contenir les clés suivantes:
X : La coordonnée horizontale (en pixels, entier) du coin supérieur gauche de la zone de culture.
Y : La coordonnée verticale (en pixels, entier) du coin supérieur gauche de la zone de culture.
Largeur : La largeur de la zone de culture (pixels).
Hauteur : la hauteur de la zone de culture (pixel).
Lorsque la fonction réussit, elle renvoie la nouvelle ressource d'image recadrée et lorsqu'elle échoue, elle renvoie faux .
Coordonnées (x, y)
Il indique la position du coin supérieur gauche de la boîte de recadrage dans l'image d'origine. Les coordonnées proviennent du coin supérieur gauche comme l'origine (0,0), l'axe x se développe à droite et l'axe y se développe vers le bas.
Largeur et hauteur
Représente la taille de la boîte à recadrage, en pixels. Doit être un entier positif et ne peut pas dépasser la zone restante disponible de l'image d'origine.
Assurez-vous que les coordonnées et les tailles ne dépassent pas la limite de l'image d'origine <br> Par exemple, si la largeur d'image d'origine est $ imgwidth et que la hauteur est $ imgheight , elle doit être satisfaite:
$x >= 0 && $y >= 0
$x + $width <= $imgWidth
$y + $height <= $imgHeight
Sinon, l'opération de culture échoue et revient fausse .
Le type de paramètre doit être un entier <br> Les arguments non entières peuvent provoquer des erreurs ou des exceptions.
Assurez-vous que la largeur et la hauteur de la zone de culture sont supérieures à 0
Lorsque la largeur ou la hauteur est 0 ou négative, la culture n'est pas valide.
Supposons que nous ayons un exemple d'image.
<?php
// Chargez l'image
$image = imagecreatefromjpeg('http://gitbox.net/example.jpg');
if (!$image) {
die('Impossible de charger l'image');
}
// Obtenez la taille d'image d'origine
$imgWidth = imagesx($image);
$imgHeight = imagesy($image);
// Définir les paramètres de recadrage
$cropRect = [
'x' => 50,
'y' => 30,
'width' => 200,
'height' => 150,
];
// Déterminez si la zone de coupe est légale
if ($cropRect['x'] < 0 || $cropRect['y'] < 0 ||
$cropRect['x'] + $cropRect['width'] > $imgWidth ||
$cropRect['y'] + $cropRect['height'] > $imgHeight) {
die('La zone de culture dépasse la limite de l'image');
}
// Crampons de recadrement
$cropped = imagecrop($image, $cropRect);
if ($cropped !== false) {
// Enregistrer les images recadrées
imagejpeg($cropped, 'cropped_example.jpg');
imagedestroy($cropped);
echo "Coupe réussie!";
} else {
echo "Croping a échoué!";
}
// Libérer les ressources
imagedestroy($image);
?>
La zone de recadrage dépasse la limite de l'image <br> Fait le retour de l'imagecrop faux . Solution: Détectez et limitez d'abord les coordonnées et les plages de dimension.
La largeur ou la hauteur ou les coordonnées sont négatives ou non intestins <br> Utilisez la fonction intVal () pour assurer le type correct avant de passer le paramètre.
La ressource d'image d'origine est vide <br> Assurez-vous que le chemin d'image est correct et que PHP a permis une extension GD.
ImageCrop nécessite une culture claire et correcte des zones rectangulaires.
Les coordonnées x et y se réfèrent à la position du coin supérieur gauche, et la largeur et la hauteur doivent être des entiers positifs et ne peuvent pas dépasser la plage d'images d'origine.
Acquérir la taille de l'image à l'avance pour vérifier la légitimité des paramètres de recadrage.
Assurez-vous de vérifier les erreurs dans le code pour éviter les exceptions du programme.
La compréhension correcte de ces points clés peut vous permettre de compléter efficacement la fonction de recadrage d'image en PHP.