php - ImageMagick 动画 GIF 压缩
问题描述
我有以下代码可以从图像列表中生成动画 GIF。它工作正常,但我想压缩它。我尝试了很多不同的策略,但结果大小始终完全相同。
我究竟做错了什么?
<?php
namespace AppBundle\Service;
class GifCreator
{
public function createGifFromImages(array $images)
{
// https://stackoverflow.com/a/10095594
$gif = new \Imagick();
$gif->setFormat("gif");
// adds all the images
foreach ($images as $image) {
$frame = new \Imagick();
$frame->readImage($image->getRealPath());
// THE FOLLOWING 2 LINES ARE NOT WORKING
//$frame->setImageCompression(\Imagick::COMPRESSION_JPEG);
//$frame->setImageCompressionQuality(5);
$frame->setImageDelay(50);
$gif->addImage($frame);
}
// optimizes the GIF
$gif->optimizeImageLayers();
// https://hotexamples.com/examples/-/Imagick/optimizeImageLayers/php-imagick-optimizeimagelayers-method-examples.html
// THE FOLLOWING 2 LINES ARE NOT WORKING
//$gif->setImageCompression(\Imagick::COMPRESSION_LZW);
//$gif->setImageCompressionQuality(30);
// writes the GIF
$tempPath = tempnam(sys_get_temp_dir(), 'GIF');
$result = $gif->writeImages($tempPath, true);
return $tempPath;
}
}
似乎addImage
没有应用适当的过滤器。
解决方案
推荐阅读
- android - 无法获取提供者 androidx.startup.InitializationProvider
- xaml - 当用户更改 Xamarin.Forms 应用程序中的动态文本大小时,我如何获得通知?
- javascript - JavaScript 显示在后退按钮单击时弹出
- chat - 如何“说服”微软团队在复制的聊天链接中显示网站徽标
- c# - 为什么我从网页“未定义”中收到错误消息
- rabbitmq - RabbitMQ 队列分片和 HA
- linux - 为什么 Linux 内核从未实现每个数据对象的 RCU 机制?
- python - 将矩阵作为输入的 Python 函数,并使用 np.linalg.cholesky 识别哪些不是正定的
- mongodb - 如何查找任何字段是否包含特定值
- c# - 在代码中设置 RowDefitions 并覆盖现有的