Bonjour a tous,
j'ai vu le tuto de imagine, et j'aimerais créer un helper avec plain de fonctionnalités sympa. Le problème est que j'ai une fonction qui fait le watermark d'un image (ajoute le un logo sur celle-ci), et je ne sais pas comment baisser l'opacité du logo ?!?!?
Quelqu'un peu m'aider ? Voici mon code si ça peut vous aider

// -------------------------------------------------------------------------
    function watermark($image_path = null, $watermark_path = null, $left = 0, $top = 0) {
        // Get site root path.
        $base_path = (defined('SITE_PATH')) ? SITE_PATH : BASE_PATH;
        // Get site root url.
        $base_url = (defined('SITE_URL')) ? SITE_URL : base_url();
        // Import the Imagine library.
        require_once $base_path.'common/libraries/imagine.phar';
        $info = pathinfo($image_path);
        if( file_exists($info'dirname'] . '/_' . $info'filename'] . '.' . $info'extension']) ) {
            return false;
        }
        $imagine = new Imagine\Gd\Imagine();
        $image = $imagine->open($base_path . $image_path);
        $isize = $image->getSize();
        $watermark = $imagine->open($base_path . $watermark_path);
        $wsize = $watermark->getSize();
        rename($base_path . $image_path, $base_path . $info'dirname'] . '/_' . $info'filename'] . '.' . $info'extension']);

        $image->paste($watermark, new Imagine\Image\Point($isize->getWidth()-$wsize->getWidth()-20, $isize->getHeight()-$wsize->getHeight()-20))
                    ->save($base_path . $image_path);
        return false;
    }
    // Exemple : watermark('uploads/vehicules/vehicule.jpg', 'uploads/vehicules/watermark.jpg');

Merci d'avance.

4 réponses


Bonjour,
Je pense qu'il faut ajouter un array() pour les options dans la method save(). C'est juste une piste, j'ai pas fouillé dans le code.

->save($base_path . $image_path, array('opacity' => '0.5'));

Ou sinon, tu travail en amont ton logo. Tu l'enregistre en PNG avec une opacité.

wYm
Auteur

le save et pour $image (la nouvelle image), alors si je met array('opacity' => '0.5') en option alors ça va enregistrer l'image entière avec cette opacité de 0.5. Tandis que moi, je ne veut rendre opaque que le logo. Mais merci pour la tentative.

Ok, et tu as essayé en modifiant ton watermark? Sur photoshop ou autre, tu lui met une opacité et tu l'enregistre en PNG

wYm
Auteur

L'intérêt de le faire en PHP c'est de le faire dynamiquement et de garder le logo originale sans modifs. en plus je travaille sous CodeIgniter il y a une librairie de traitement d'image qui fait ça mais je veut essayer Imagine peu être elle est mieux.