Je suis en train de faire ce qui suit dans imagick et je ne peux pas le faire fonctionner:Redimensionner l'image et la place dans le centre de la toile
Vérifiez si l'image est élevée sur 390 pixels, si elle est redimensionne alors il à 390 pixels de haut, si ce n'est pas garder les dimensions.
Ajoutez une toile blanche de 300 pixels de largeur sur 400 pixels de hauteur, puis placez l'image au centre de celle-ci.
code Mon est:
$im = new imagick("test.jpg");
$imageprops = $im->getImageGeometry();
$width = $imageprops['width'];
$height = $imageprops['height'];
if($height > '390'){
$newHeight = 390;
$newWidth = (390/$height) * $width;
}else{
$newWidth = $imageprops['width'];
$newHeight = $imageprops['height'];
}
$im->resizeImage($newWidth,$newHeight, imagick::FILTER_LANCZOS, 0.9, true);
$canvas = new Imagick();
$canvas->newImage(300, 400, 'white', 'jpg');
$canvas->compositeImage($im, imagick::COMPOSITE_OVER, 100, 50);
$canvas->writeImage("test-1.jpg");
Lorsque les images sont produites les grandes sont mises à l'échelle à 388 pixels de haut pour une raison quelconque et les petits sont laissés à leurs dimensions d'origine.
La mise en place sur le canevas est toujours incorrecte bien que le travail sur les grandes images avec 100,50 soit ajouté à l'image composite.
La plupart des images sont grandes et minces, mais certaines sont plus larges que hautes.
Des idées où je me trompe?
Merci,
Rick
Vous pouvez trouver plus facile de définir la gravité pour CENTRE, la couleur d'arrière-plan blanc, puis utilisez 'setImageExtent()' pour mettre votre image sur une toile blanche de 300x400. –
'if ($ height> 390)' sans les guillemets. –