1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
$Original = $pathOriginal.'paysage2.jpg';//image jpg
$Original2 = $pathOriginal.'hommes.jpg';//image jpg
try {
$im = new Imagick($Original);
//on stipule une largeur et hauteur maximum
//cette fonction se chargera de trouver la meilleure taille en gardant les proportions (paramètre à true)
$im->adaptiveResizeImage(500, 500, true);
$im->normalizeImage();
//on récupère la taille de l'image redimensionnées pour plus tard
$iw = $im->getImageWidth();
$ih = $im->getImageHeight();
//on transforme notre image en PNG
$im->setImageFormat('png');
$im->setImageMatte(true);
//on charge notre 2em image
$im2 = new Imagick($Original2);
//on transforme notre image en PNG
$im2->setImageFormat('png');
$im2->setImageMatte(true);
//on améliore le contraste de l'image
$im2->normalizeImage();
//pour rendre l'image plus nette
$im2->unsharpMaskImage(0 , 0.5 , 1 , 0.05);
//on met de la transparence sur des couleurs cibles
$im2->paintOpaqueImage("#ffffff", "#cccccc", 0);
$im2->reduceNoiseImage(0.5);
$im2->paintTransparentImage("#ffffff",0, 3000);
$im2->paintTransparentImage("#ffffff",0, 4000);
$im2->paintTransparentImage("#D2D2D2",0, 4000);
$im2->paintTransparentImage("#C0C0C2",0, 6000);
$im2->sharpenImage(0,0.5);
//on redimensionne notre 2em image
$im2->adaptiveResizeImage($iw/1.7, $ih/1.7, true);
$iw2 = $im2->getImageWidth();
$ih2 = $im2->getImageHeight();
//on associe les deux images
//et on ajuste
//left:
$letf = floor(($iw-$iw2)/2)+90;
//top:
$top = floor(($ih-$ih2)/2)+90;
$im->compositeImage($im2, Imagick::COMPOSITE_OVER, $letf, $top, Imagick::CHANNEL_ALL);
//on ajoute un titre
$msg = "Imagick c'est magique:-)";
$padx = 20;
$pady = 5;
$bc = "#d0d0d0ff";
$fc = "#00000060";
$tc = "white";
/* annotation */
$im3 = new Imagick();
$idraw = new ImagickDraw();
$idraw->setFont('Bookman-DemiItalic');
$idraw->setFontSize(18);
$idraw->setGravity(Imagick::GRAVITY_CENTER);
$metrics = $im3->queryFontMetrics($idraw, $msg);
$im3->newPseudoImage($metrics["textWidth"]+$padx*2, $metrics["textHeight"]+$pady*2, "xc:none");
$idraw->setFillColor($fc);
$idraw->setStrokeColor($bc);
$idraw->roundrectangle(0,0, $metrics["textWidth"]+$padx*2-1, $metrics["textHeight"]+$pady*2-1,10,10);
$idraw->setFillColor($tc);
$idraw->setStrokeColor($tc);
$idraw->annotation(0, 0, $msg);
$im3->drawImage($idraw);
$center = (($iw - ($metrics["textWidth"]+$padx*2))/2);
$im->compositeImage($im3,Imagick::COMPOSITE_OVER, $center, 300, Imagick::CHANNEL_ALL);
//on enregistre l'image sur le serveur
$im->writeImage($pathModify.'/'.nettoyenament($NameFunction).'4.png' );
//on affiche l'image modifiée
echo '<div style=float:left>5em traitement:<br/><img src="../imgs_modify/'.nettoyenament($NameFunction).'4.png"></div>';
$im3->destroy();
$im2->destroy();
$im->destroy();
}
catch(ImagickException $e){
echo 'Erreur : ' , $e->getMessage(); die();
} |
Partager