Обрезание и уменьшение gif без потери анимации
Существует функция обрезания гиф анимации, с использованием ImageMagic, но в данном исполнении, в некоторых случаях, происходит искажение анимации. Необходимо переделать либо всю функцию, либо процедуру convert таким образом, чтобы полностью сохранить гиф анимацию, чтобы скрипт резал и уменьшал по заданным параметрам. Необходимо сохранить, используемые в данной функции переменные:
private function _crop_gif($imgDest)
{
$imgSrc = $this->src_path;
$imgWidth = $this->dest_image_w;
$imgHeight = $this->dest_image_h;
$imgSize = getimagesize($this->src_path);
$imgMaxWidth = $imgWidth;
$imgMaxHeight = $imgHeight;
if ($imgSize[0] > $imgSize[1])
{
$thisRatio = $imgSize[0] / $imgSize[1];
$imgMaxWidth = round($imgMaxHeight * $thisRatio);
}
else
{
$thisRatio = $imgSize[1] / $imgSize[0];
$imgMaxHeight = round($imgMaxWidth * $thisRatio);
}
$cmdCommand = "convert -size {$imgMaxWidth}x{$imgMaxHeight} {$imgSrc} -thumbnail {$imgMaxWidth}x{$imgMaxHeight} -gravity center -crop {$imgWidth}x{$imgHeight}+0+0 -repage {$imgWidth}x{$imgHeight} {$imgDest}";
@exec($cmdCommand);
return file_exists($imgDest);
}
Стоимость работы и время исполнения, указывайте в комментариях. Естественно, выполнить работу нужно как можно быстрее.