Imagick::cropImage

(PECL imagick 2.0.0)

Imagick::cropImageExtrait une région d'une image

Description

bool Imagick::cropImage ( int $width , int $height , int $x , int $y )

Extrait une région d'une image.

Liste de paramètres

width

La largeur du retaillage

height

La hauteur du retaillage

x

L'abscisse, coordonnée X, de la région retaillée, coin haut gauche

y

L'ordonnée, coordonnée Y, de la région retaillée, coin haut gauche

Valeurs de retour

Returns TRUE on success.

Erreurs / Exceptions

Lance une exception ImagickException si une erreur survient.

Exemples

Exemple #1 Exemple avec Imagick::cropImage()

<?php
function cropImage($imagePath$startX$startY$width$height) {
    
$imagick = new \Imagick(realpath($imagePath));
    
$imagick->cropImage($width$height$startX$startY);
    
header("Content-Type: image/jpg");
    echo 
$imagick->getImageBlob();
}

?>

add a note add a note

User Contributed Notes 4 notes

up
3
Christian Dehning
5 years ago
When cropping gif-images (I had no problems with jpg and png images), the canvas is not removed. Please run the following command on the cropped gif, to remove the blank space:

$im->setImagePage(0, 0, 0, 0);
up
1
ElPadre
4 years ago
Actually, the Imagick::setImagePage(0,0,0,0) is also handy with jpgs and pngs, if you plan to do any more changes on the cropped image that involves positioning and/or gravity (I created a script that does crop, face blur and watermarking in one go, and had a hell of a time determining why the blurs and the watermark text never showed up...).
up
0
oxxido at gmail dot com
2 months ago
I have a function that takes an image, resize and crop it, and save it as normal, then resize it again and crop it again to create the thumbnail. The numbers of the second crop were WAY off, and the calculations were perfect, the problem, was the second crop wasn't resetting the imagePage, so if you try to crop the same image twice, it will be a good idea to reset it first:
<?php
$thumb
= new Imagick($file)
$thumb->resizeImage($r_w1,$r_h1,Imagick::FILTER_CATROM,0.9, false);
$thumb->cropImage($w1,$h1,$l1,$t1);
$thumb->writeImage($destinationPath.'/'.$fileName);

$thumb->resizeImage($r_w2,$r_h2,Imagick::FILTER_CATROM,0.9, false);
$thumb->setImagePage(0, 0, 0, 0);
$thumb->cropImage($w2,$h2,$l2,$t2);
$thumb->writeImage($destinationPath.'/'.$fileNameThumb);

?>

BTW, i needed perfect dimentions so i had to set the "bestfit" to false.
up
-32
vincent dot hoen at gmail dot com
7 years ago
There is an easiest way to crop an image : 

$picture = new Imagick('animated_gif.gif');

foreach($picture as $frame){
    $frame->cropImage($width, $height, $x, $y);
}
To Top