[英]Adding text on animated gif with ImageMagick and php
I try to adding text on animated gif with ImageMagick : 我尝试使用ImageMagick在动画gif上添加文本:
$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. 您可能想使用
-coalesce
方法从GIF框架中删除所有优化,然后对其进行标记,然后使用-layers Optimize
重新设置其动画-layers Optimize
,因为否则,各种优化(针对调色板和帧间差异)都会干扰,并降低标签的质量。
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 参考 : 请参见ImageMagick文档
I don't tend to use PHP, but there appear to be methods matching the above functionality: 我不倾向于使用PHP,但是似乎有一些方法可以匹配上述功能:
Imagick Imagick::coalesceImages ( void )
bool Imagick::optimizeImageLayers ( void )
终于找到了 :
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.