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...).
Imagick::cropImage
(PECL imagick 2.0.0)
Imagick::cropImage — Extracts a region of the image
Descrierea
bool Imagick::cropImage
( int
$width
, int $height
, int $x
, int $y
)Extracts a region of the image.
Parametri
-
width -
The width of the crop
-
height -
The height of the crop
-
x -
The X coordinate of the cropped region's top left corner
-
y -
The Y coordinate of the cropped region's top left corner
Valorile întoarse
Întoarce TRUE în caz de succes.
Erori/Excepții
Emite ImagickException în caz de eroare.
ElPadre ¶
2 years ago
Christian Dehning ¶
3 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);
vincent dot hoen at gmail dot com ¶
5 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);
}
vincent dot hoen at gmail dot com ¶
5 years ago
If you're working with animated gif you might want to process this way (Probably not the best, but at least it works) :
$picture = new Imagick('animated_gif.gif');
//Crop first image
$picture->cropImage($width, $height, $x, $y);
//Crop every other image
while($picture->hasNextImage()){
$this->nextImage();
$this->cropImage($width, $height, $x, $y);
}
//display image
$picture->getImageBlob();
