我正在尝试将动画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的颜色并进行更改?我不知所措,因为我对图像处理没有太多经验。
答案 0 :(得分:0)
对不起,我不太了解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