Мне нужна функция, которая добавляет водяной знак в анимированный gif. Как я могу это сделать с PHP и ImageMagick?
Это мой код, но он не работает.
function IMagickWatermark($sf, $sfDest, $sfLogo, $sGravity='southeast'){ //$sCmd = "composite -compose bumpmap -gravity $sGravity $sfLogo \"$sf\" $sfDest"; $sCmd = "convert \"$sf\" -coalesce -gravity south -draw 'image over 0,0 0,0 \"$sfLogo\"' \"$sfDest\""; exec($sCmd); return 1; } $sf = $_SERVER['DOCUMENT_ROOT']."/test/source.gif"; $sfDest = $_SERVER['DOCUMENT_ROOT']."/test/dest.gif"; $sfLogo = $_SERVER['DOCUMENT_ROOT']."/test/logowithtext.gif"; IMagickWatermark($sf, $sfDest, $sfLogo, $sGravity='SouthEast');
Попробуй это:
$animation = ani.gif; $watermark = logo.png; $watermarked_animation = "morph.gif"; $cmd = " $animation -coalesce -gravity South ". " -geometry +0+0 null: $watermark -layers composite -layers optimize "; exec("convert $cmd $watermarked_animation ");
<?php shell_exec('for i in sphere*.gif; do convert $i -font Arial -pointsize 20 \ -draw "gravity south \ fill black text 0,12 \'Copyright\' \ fill white text 1,11 \'Copyright\' " \ wmark_$i; done'); shell_exec("convert -delay 20 -loop 0 wmark_sphere*.gif animatespheres.gif"); $f = fopen("animatespheres.gif", 'rb'); fpassthru($f); fclose($f); ?>
если вам нужно отлаживать, удалите fopen, fpassthru, fclose lines и добавьте echo для shell_execs.