PHP ImageMagick 在动画 Gif 的每一帧中改变颜色
PHP ImageMagick change color in every frame Animated Gif
我正在尝试将动画 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 索引颜色并更改它?我很迷茫,因为我没有太多的图像处理经验。
抱歉,我不太了解 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
我正在尝试将动画 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 索引颜色并更改它?我很迷茫,因为我没有太多的图像处理经验。
抱歉,我不太了解 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