PHP Velho Oeste 2024

imagecrop

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

imagecropRecadre une image sur le rectangle donné

Description

imagecrop(GdImage $image, array $rectangle): GdImage|false

Recadre une image à la zone rectangulaire donnée et retourne l'image résultante. L'image n'est pas modifiée.

Liste de paramètres

image

Un objet GdImage, retournée par une des fonctions de création d'images, comme imagecreatetruecolor().

rectangle

array contenant les clés x, y, width et height.

Valeurs de retour

Retourne l'objet' de l'image recadrée en cas de succès ou false si une erreur survient.

Historique

Version Description
8.0.0 En cas de succès, cette fonction retourne désormais une instance de GDImage ; auparavant, une resource était retournée.

Exemples

Exemple #1 Exemple avec imagecrop()

Cet exemple montre comment rogner une image sur une zone carrée.

<?php
$im
= imagecreatefrompng('example.png');
$size = min(imagesx($im), imagesy($im));
$im2 = imagecrop($im, ['x' => 0, 'y' => 0, 'width' => $size, 'height' => $size]);
if (
$im2 !== FALSE) {
imagepng($im2, 'example-cropped.png');
imagedestroy($im2);
}
imagedestroy($im);
?>

Voir aussi

  • imagecropauto() - Recadre une image automatiquement en utilisant un des modes disponibles
add a note add a note

User Contributed Notes 3 notes

up
14
robert at woodst dot com
7 years ago
It appears that imagecrop() will output a black line along the bottom the resulting image until version 5.6.12. Your only choices are to upgrade PHP or use imagecopyresampled().

http://php.net/ChangeLog-5.php#5.6.12 (bug #67447)
up
-11
shaun at slickdesign dot com dot au
6 years ago
Use imagecopyresampled to crop your image instead, and it should work correctly in PHP 5.5+ without any black lines.

<?php
// Desired function call.
$cropped = imagecrop( $image, array( 'x' => $x, 'y' => $y, 'width' => $width, 'height' => $height ) );

// Equivalent function which works in both PHP pre 5.6.12 and 5.6.12+.
$cropped = imagecreatetruecolor( $width, $height );
imagecopyresampled( $cropped, $image, 0, 0, $x, $y, $width, $height, $width, $height );
?>
up
-14
vanadragos at yahoo dot com
6 years ago
To get the center crop of a image in php:

           
$new = imagecreatefromjpeg($uploadedfile);

    $crop_width = imagesx($new);
    $crop_height = imagesy($new);
               
            $size = min($crop_width, $crop_height);
           
           
            if($crop_width >= $crop_height) {
            $newx= ($crop_width-$crop_height)/2;
           
            $im2 = imagecrop($new, ['x' => $newx, 'y' => 0, 'width' => $size, 'height' => $size]);
            }
            else {
                $newy= ($crop_height-$crop_width)/2;
           
                $im2 = imagecrop($new, ['x' => 0, 'y' => $newy, 'width' => $size, 'height' => $size]);
                }
           
               
    imagejpeg($im2,$filename,90);
To Top