2010-05-25 9 views
0

Voici mon code actuel:Comment superposer un filigrane sur une image déjà rééchantillonnée en PHP (en utilisant GD)?

define('IMG_WIDTH', (isset ($_GET['width'])) ? (int) $_GET['width'] : 99); 
define('IMG_HEIGHT', (isset ($_GET['height'])) ? (int) $_GET['height'] : 75); 

$image  = imagecreatefromjpeg($_GET['image']); 
$origWidth = imagesx($image); 
$origHeight = imagesy($image); 

$croppedThumb = imagecreatetruecolor(IMG_WIDTH, IMG_HEIGHT); 

if ($origWidth > $origHeight) 
{ 
    $leftOffset = ($origWidth - $origHeight)/2; 
    imagecopyresampled($croppedThumb, $image, 0, 0, $leftOffset, 0, IMG_WIDTH, IMG_HEIGHT, $origHeight, $origHeight); 
} 
else 
{ 
    $topOffset = ($origHeight - $origWidth)/2; 
    imagecopyresampled($croppedThumb, $image, 0, 0, 0, $topOffset, IMG_WIDTH, IMG_HEIGHT, $origWidth, $origWidth); 
} 

Il faut essentiellement une image et redimensionne pour créer une vignette. Cela fonctionne très bien. Ce que je voudrais faire maintenant, c'est ajouter un filigrane dans le coin inférieur droit. J'ai vu la fonction imagecopymerge utilisée pour cela ... Cependant, cela ne semble pas me permettre de fournir une image rééchantillonnée comme source.

Comment puis-je prendre mon image déjà modifiée et ajouter un filigrane? :/

J'ai pensé à sauver l'image/tmp puis unlink() 'ing une fois que je l'ai ajouté le filigrane, mais cela semble être un peu un gâchis ...

Répondre

0

Vous pouvez utilisez $croppedThumb comme premier argument à imagecopymerge. Vous n'avez pas à enregistrer l'image en premier.

Questions connexes