php - imageMagick gif 移出框架

标签 php imagemagick gif imagick

我有这个简单的代码,可以在 PHP 上使用 imageMagick 旋转静态图像

$url = file_get_contents('https://via.placeholder.com/100x100');

$image = new Imagick();
$image->readImageBlob($url);
$image->resizeImage(128, 128, Imagick::FILTER_UNDEFINED, 0, 0);


$GIF = new Imagick();
$GIF->setFormat("gif");

for ($i = 0; $i < 6; ++$i) {

    $image->setImageDispose(2);
    $image->rotateImage('transparent', $i * 6);
    $image->setImageDelay(20);
    $GIF->addImage($image);
    
}

header("Content-Type: image/gif");
echo $GIF->getImagesBlob();

由于某种原因,它会随着每个新图像而偏移,如下所示:

wrong rotation

如何让它停止移出框架?

最佳答案

我不是 PHP Imagick 的专家,但你的问题是,rotateImage() 似乎总是围绕左上角而不是中心旋转。这与 ImageMagick 中使用 -rotate 绕中心旋转的方式相反。

这是使用 DISTORTION_SCALEROTATETRANSLATE (int) 的某人解决方案的链接

PHP - Rotate image on reference point

关于php - imageMagick gif 移出框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65697272/

相关文章:

java - Gif 无法在 JFrame 中播放

javascript - 如何将javascript变量值分配给php变量

PHP 在 Windows 中忽略它的 php.ini

php - 检查目录路径是否以 DIRECTORY_SEPARATOR 结尾

javascript - 使用 jQuery 将 Div 内容替换为另一个内容

Python、ImageMagick 和 `subprocess`

imagemagick - 在 Imagemagick 中随机旋转图像

imagemagick - GraphicsMagick 和 ImageMagick 之间的实际区别是什么?

javascript - 如何伪造图片的加载 gif

php - Imagemagick动画gif尺寸优化