Site original : Warrior du Dimanche
Allez, pour une fois, j'ai un peu de temps devant moi, je vais éplucher un peu la lib Image magick dont je parlais il n'y à guère...
Simple: pas besoin de plusieurs fonctions selon le format, il suffit de $images = new Imagick('image.jpg');
Même pas nécessaire de passer par un foreach, on fournit le tableau des fichiers voire directement un glob: $images = new Imagick(glob('images/*.JPG'));
$im->writeImage('image.jpg');
Si on laisse une dimension à 0, les proportions sont conservées (quand tu vois la merde que c'est avec GD !)
$image->thumbnailImage(100, 0);
header('Content-type: image/jpeg');
$image = new Imagick('image.jpg');
# ici on effectue un traitement puis on sort le résultat
echo $image;
$im->getImageWidth() $im->getImageHeight()
$im->getImageFormat()
$im->setImageFormat('png');
! 😍$im->NewImage(largeur,hauteur,couleur de fond);
Comme pour GD, il faut créer un objet couleur dans les traitements d'image, mais c'est plus simple qu'avec GD (et plus complet): il suffit de passer une couleur selon les normes CSS. Du coup, la transparence n'est pas gérée par une connerie de paramètre «alpha» mais simplement par ... rgba()... 💖
$couleur=new ImagickPixel("white");
$couleur=new ImagickPixel("#FFF");
$couleur=new ImagickPixel('rgb(255,255,200)');
$couleur=new ImagickPixel('rgba(255,255,200,0.5)');
🆒 ⮕ Ça peut paraître compliqué, mais en fait, dans les fonctions où on est sensé utiliser ImagickPixel, je me suis aperçu qu'on pouvait tout simplement passer une string contenant la couleur css... elles se démerdent seules. 😍
$im->borderImage(new ImagickPixel("white"), 5, 5);
$im->setFont("example.ttf");
$im->negateImage(0);
$im->normalizeImage();
$im->gammaImage(5);
$im->brightnessContrastImage(niveau luminosite, niveau contraste);
$im->equalizeImage()
$im->colorizeImage("red",0.5);
🤬 pas réussi à l'utiliser pour ce test...$i->resizeImage(250,0,Imagick::FILTER_POINT,0);
$im->cropImage(200,200,50,50);
$im->flipImage()
pour retourner horizontalement$im->flopImage()
pour retourner verticalement$im->rotateImage(new ImagickPixel('#00000000'), 75);
$im->->setImageOpacity(0.3);
$im->blurImage(5,2);
$im->gaussianBlurImage(5,2);
$im->motionBlurImage(5,5,45);
$im->posterizeImage(5,0);
`$im->addNoiseImage(imagick::NOISE_GAUSSIAN );
voir les constantes de type de bruit $im->sketchImage(rayon, deviation, angle);
$im ->charcoalImage(rayon, deviation);
$im->->shadeImage(1, 90, 2); # emboss + image grisée
$im->shadeImage(0, 90,2) # emboss sur l'image d'origine (couleur)
$im->oilPaintImage(5);
$im->edgeImage(5);
$im->waveImage( 10, 10);
$imageclonee=$image->clone();
$im->compositeImage($autreimage, imagick::COMPOSITE_OVER, 0, 0);
(la composition, la façon de mélanger les images, peut être une de celles-ci https://www.php.net/manual/fr/imagick.constants.php#imagick.constants.compositeop)Je voulais mettre une image de chaque effet dans les descriptions mais: