If using the fit-parameter this function sometimes seems not to work when one of the two sizes (width or height) is the same size as the image has. For example:
<?php
$image = new Imagick('800x480.jpg');
$image->scaleImage(640, 480, true);
// $image is still 800x480
?>
You have to calculate the new sizes yourself and use false for $fit in this case.
Imagick::scaleImage
(PECL imagick 2.0.0)
Imagick::scaleImage — Met à l'échelle la taille de l'image
Description
$cols
, int $rows
[, bool $bestfit = false
] )Met à l'échelle la taille de l'image, aux dimensions voulues. Les autres paramètres seront calculés si 0 est pas dans l'un d'entre eux.
Note: Le comportement du paramètre
bestfita changé avec Imagick 3.0.0. Avant cette version, fournir les dimensions 400x400 à une image de dimensions 200x150 faisait que la partie gauche était inchangée. Avec Imagick 3.0.0 et suivants, l'image est réduite à la taille 400x300, sachant que c'est le meilleur résultat pour ces dimensions. Si le paramètrebestfitest utilisé, la largeur et la hauteur doivent être fournies.
Liste de paramètres
-
cols -
-
rows -
-
bestfit -
Valeurs de retour
Returns TRUE on success.
Erreurs / Exceptions
Lance une exception ImagickException si une erreur survient.
Historique
| Version | Description |
|---|---|
| 2.1.0 | Ajout d'un paramètre optionnel de fit. Cette méthode supporte désormais la mise à l'échelle proportionnelle. Passez zéro dans l'un des paramètres pour activer cette option. |
When using the "fit = true" option, the image will only scale down, but never scale up:
<?php
$im = new Imagick('1600x1200.jpg');
$im->scaleImage(2000, 1500, true); // => 1600x1200
$im->scaleImage(1000, 500, true); // => 666x500
?>
If anyone finds "The other parameter will be calculated if 0 is passed as either param. " to be a bit confusing, it means approximately this:
<?php
$im = new Imagick('example.jpg');
$im->scaleImage(300, 0);
?>
This scales the image such that it is now 300 pixels wide, and automatically calculates the height to keep the image at the same aspect ratio.
<?php
$im = new Imagick('example.jpg');
$im->scaleImage(0, 300);
?>
Similarly, this example scales the image to make it 300 pixels tall, and the method automatically recalculates the image's height to maintain the aspect ratio.
Here is an easy way to resize an animated gif :
$picture = new Imagick('animated_gif.gif');
foreach($picture as $frame){
$frame->scaleImage($width, $height);
}
