简体   繁体   中英

Adding text on animated gif with ImageMagick and php

I try to adding text on animated gif with ImageMagick :

$source = public_path().'/test.gif';
$output = public_path().'/test2.gif';
$text = 'the cake is a lie';

// Create objects
$image = new Imagick($source);

// Create a new drawing palette
$draw = new ImagickDraw();

// Set font properties
$draw->setFont(public_path().'/fonts/Impact.ttf');
$draw->setFontSize(20);
$draw->setFillColor('black');

// Position text at the bottom-right of the image
$draw->setGravity(Imagick::GRAVITY_SOUTHEAST);

// Draw text on the image
$image->annotateImage($draw, 10, 12, 0, $text);

// Draw text again slightly offset with a different color
$draw->setFillColor('white');
$image->annotateImage($draw, 11, 11, 0, $text);

// Set output image format
$image->setImageFormat('gif');

$image->writeImage($output);

But with this code the image is no longer animated and the quality is very bad, any idea ?

You probably want to use the -coalesce method to remove all optimisations from your GIF frames, then label it and then re-animate it with -layers Optimize , because otherwise the various optimisations (to the palette and inter-frame differences) interfere with, and reduce the quality of, your labelling.

So, at the command-line, the process is like this:

convert animation.gif -coalesce \
      -gravity SouthEast -background white ... <do label here>
      -layers Optimize output.gif

Reference : See ImageMagick documentation here

I don't tend to use PHP, but there appear to be methods matching the above functionality:

Imagick Imagick::coalesceImages ( void )

documentation

bool Imagick::optimizeImageLayers ( void )

documentation

终于找到了 :

exec('/usr/local/bin/convert '.$source_img.' -font '.$font_location.' -pointsize 14 -draw "gravity south fill black text 0,12 \'some text\' fill white text 1,11 \'some text\' " '.$output_img);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM