PHP ImageMagick 在每一帧动画 Gif 中改变颜色
Posted
技术标签:
【中文标题】PHP ImageMagick 在每一帧动画 Gif 中改变颜色【英文标题】:PHP ImageMagick change color in every frame Animated Gif 【发布时间】:2019-07-25 02:21:37 【问题描述】:我正在尝试将动画 GIF 中的 RGB 值更改为另一个 RGB 值。然而,在我所有的尝试中,它只是改变一帧而不是所有帧的颜色。
$imgif = new Imagick(HOME_PATH.'/images/6.gif');
$target = 'rgba(238,131,41, 1.0)';
$fill = 'rgba(163,145,144, 1.0)';
$fuzz = 0.05 * $imgif->getQuantumRange()['quantumRangeLong'];
$imgif->opaquePaintImage($target, $fill, $fuzz, false, Imagick::CHANNEL_DEFAULT);
$imgifblob = $imgif->getImagesBlob();
是否可以为整个 GIF 索引颜色并进行更改?我很迷茫,因为我没有太多图像处理经验。
【问题讨论】:
【参考方案1】:抱歉,我不太了解 Imagick。但这里是如何在 Imagemagick 命令行中执行此操作。您可能必须在 Imagick 中循环遍历每一帧,因为它可能不允许处理多帧图像。但也许使用 readImages 会起作用。请参阅https://www.php.net/manual/en/imagick.readimages.php,您将 gif 中的所有帧指定为 6.gif[0--1],即从第 0 帧到最后一帧 -1 的所有帧。对不起,我只是不知道。 Imagick 专家可能会提供更多帮助。
输入:
convert bunny_anim.gif -coalesce -fuzz 10% -fill red -opaque "rgb(51,77,204)" -layers optimize new_bunny.gif
【讨论】:
以上是关于PHP ImageMagick 在每一帧动画 Gif 中改变颜色的主要内容,如果未能解决你的问题,请参考以下文章
使用PythonOpenCV,ImageMagick工具箱根据原始视频制作GIF动画
在每一帧上更新整个 VBO 是绘制许多变化的独特三角形的最有效方法吗?