WEB-d Développement Web

PHP, SQL, HTML5, CSS3, Javascript, Mootools, Référencement, SEO, CMS, e-commerce, Apache, Linux, Ubuntu, ...

Watermark transparent automatique

L'extension Imagick, et la fonction set_opacity présentée dans l'article précédent, permettent d'ajouter automatiquement un watermark transparent à une image à partir d'un texte.

Eléphant avec watermark automatique


$image = new Imagick("elephant.png");
add_watermark($image, "www.web-d.be");
header("Content-Type: image/" . $image->getImageFormat());
echo $image;


function add_watermark($img, $text) {
    if (!is_object($img)) {
        return false;
    }

    $watermark = new Imagick();

    $draw = new ImagickDraw();
    $draw->setFillColor('white');
    $draw->setFont('Palatino-Bold');
    $draw->setFontSize(42);
    $draw->setGravity(imagick::GRAVITY_CENTER);

    $metrics = $watermark->queryFontMetrics($draw, $text);

    $pixel = new ImagickPixel('transparent');
    $watermark->newImage($metrics['textWidth'], $metrics['textHeight'], $pixel);

    $watermark->annotateImage($draw, 0, 0, 0, 'www.web-d.be');
    set_opacity($watermark, 0.35);

    // Sizes
    $iWidth = $img->getImageWidth();
    $iHeight = $img->getImageHeight();
    $wWidth = $watermark->getImageWidth();
    $wHeight = $watermark->getImageHeight();

    // Resize Watermark if needed...
    if ($iHeight < $wHeight || $iWidth < $wWidth) {
        $watermark->scaleImage($iWidth, $iHeight, true);

        $wWidth = $watermark->getImageWidth();
        $wHeight = $watermark->getImageHeight();
    }

    // Calculate the position
    $x = ($iWidth - $wWidth) / 2;
    $y = ($iHeight - $wHeight) / 2;

    $img->compositeImage($watermark, imagick::COMPOSITE_OVER, $x, $y);
   
    return true;
}
 

Articles similaires